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贡献代码,定义自己的官方方言。
验收材料
交付件清单
- (1) fake2db仓库地址:https://github.com/emirozer/fake2db
- (2) 博客的地址: https://bbs.huaweicloud.com/blogs/439083
验收细则 | 评分说明 | 是否为验收必选项 | 结果(通过/不通过) | 开发者举证 |
---|---|---|---|---|
功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发 | 完成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) | 推荐 |
- 点赞
- 收藏
- 关注作者
评论(0)