fake2db适配GaussDB开源验证任务心得

举报
西装暴徒_Michael 发表于 2024/11/08 16:17:46 2024/11/08
【摘要】 fake2db这个任务的主要工作是完成 fake2db 连接 GaussDB 的验证工作。

第一步先看下任务计划书 https://bbs.huaweicloud.com/blogs/439241 ,fake2db这个任务的主要工作是完成 fake2db 连接 GaussDB 的验证工作。总体来讲不是很复杂,主要是需要花时间熟悉fake2db的底层代码逻辑和基本使用方法,下面介绍下适配过程中的一些关键步骤。

开发过程

fake2db适配过程

1、为了避免开发环境混乱无序,建议使用虚拟环境开发:python -m venv yourVenvName

2、fork代码 https://github.com/emirozer/fake2db 到个人仓库,然后再进入虚拟环境,clone代码。

3、安装fake2db所需的依赖仓库

pip install -r requirements.txt

pip install psycopg2-binary

4、因fake2的用法,是在命令行中输入,如:fake2db --rows 200 --db sqlite 来生成测试数据,so,要使用setup.py来注册fake2db命令

python setup.py develop 

注意此命令在fake2db的根目录执行,即setup.py的同级目录

5、购买GaussDB数据库

6、使用命令生成测试数据,fake2db --db postgresql --rows 5 --host $yourIP --port $yourPort --username root --password $yourpassword --name $DBName

7、登录GaussDB提供的管理平台查看是否创建数据库,以及创建的数据表数据是否符合预期

至此,经验收,fake2db所生成的数据符合预期,fake2db适配GaussDB,使用psycopg2驱动,可以完成基本使用,后续有因方言等问题,持续更新。

Django提供RESTful API开发过程

根据项目验收要求,对在GaussDB上新建的数据,提供RESTful API的要求,采用Django+djangorestframework+GaussDB的技术栈实现

1、新建虚拟环境,如上

2、安装Django所需的依赖库

pip install django==3.2.25

pip install djangorestframework==3.12.0

pip install psycopg2-binary

3、设置Django下的settings.py里的database的配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'XXX',    # 数据库名称
        'USER': 'XXX',    # 数据库用户
        'PASSWORD': 'XXX',  # 用户密码
        'HOST': 'XXX',   # GaussDB 主机
        'PORT': 'XXX',        # GaussDB 端口
    }
}

4、因GaussDB上已经有了数据,我们可以通过Django提供的反向生成models.py的命令生成Model

python manage.py inspectdb > demoapp/models.py

5、开发好urls.py、views.py、serializers.py的代码,就可以启动服务了

6、启动服务,python manage.py runserver 0.0.0.0:yourPort

7、验证数据,进过测试,可以通过API对GaussDB的数据CRUD操作。

修改name='fake_test'

开发总结

因fake2db项目为python项目需要适配GaussDB,so,驱动需要使用psycopg2,在开发过程中,出现了一个小插曲,我使用GaussDB官网提供的psycopg2驱动包时,会出现Illegal instruction (core dumped)的报错。根据报错信息排查,可能是操作系统与之不匹配的原因,但是我是安装的与之对应的版本。为了节约时间,我用pip提供的psycopg2包,经测试可以完成适配任务。就使用的是pip提供的psycopg2包。

总体看,虽然能够运行起来,还是给开发者不太可靠的感觉。 期望GaussDB能够更多支持开源社区的共建,提供稳定的,pip可访问的DB驱动,也给 psycopg2贡献代码,定义自己的官方方言。

验收材料

交付件清单

验收细则 评分说明 是否为验收必选项 结果(通过/不通过) 开发者举证
功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发 完成GaussDB数据库适配功能验证。 参考资源清单和测试结果。
代码质量:适配华为三大根技术生态的代码质量经过工具检测达标 不涉及
提供相关文档,比如部署文档、使用文档、配置文档等 不涉及
合入到开源项目主仓:代码推送上游社区 不涉及
Deomo设计&开发:完成功能演示Demo的开发 不涉及
Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证 提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的规格清单。 参考资源清单和测试结果。
发布博客:发布博客介绍适配心得。 提供博客的地址。 参考(2)
制作单机版无高危开源镜像。 上架云商店。
单机版镜像上架时支持模板部署。
制作集群版无高危开源镜像 上架云商店。
集群版镜像上架时支持模板部署

资源清单

产品名称 产品类型 数据库引擎版本 内核引擎版本 实例类型 部署形态 备注
云数据库 GaussDB 基础版 V2.0-8.* 505.2.* 集中式 1主2备 推荐


产品名称 CPU架构 实例类型 公共镜像 镜像版本 备注
弹性云服务器 鲲鹏计算 鲲鹏通用计算增强型 Huawei Cloud EulerOS Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) 推荐


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。