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贡献代码,定义自己的官方方言。
补充:之前一版使用的psycopg2包,是pip提供的。因需要修改GaussDB的password_encryption_type,会降低数据库的安全性。so,并不是理想的方案。后经排查,找到了之前Illegal instruction (core dumped)报错的原因。因我的ECS系统为Huawei Cloud EulerOS,在使用GaussDB提供的psycopg2包,解压时,需要使用Hce2_arm_64这个目录下的python的压缩包,解压后安装,才能正常使用。经测试,在不修改GaussDB的password_encryption_type的前提下,可以满足fake2db适配GaussDB数据库的要求。
验收材料
交付件清单
- (1) fake2db仓库地址:https://github.com/emirozer/fake2db
- (2) 博客的地址: https://bbs.huaweicloud.com/blogs/439083
资源清单
产品名称 | 产品类型 | 数据库引擎版本 | 内核引擎版本 | 实例类型 | 部署形态 | 备注 |
---|---|---|---|---|---|---|
云数据库 GaussDB | 基础版 | V2.0-8.* | 505.2.* | 集中式 | 1主2备 | 推荐 |
产品名称 | CPU架构 | 实例类型 | 公共镜像 | 镜像版本 | 备注 |
---|---|---|---|---|---|
弹性云服务器 | 鲲鹏计算 | 鲲鹏通用计算增强型 | Huawei Cloud EulerOS | Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) | 推荐 |
- 点赞
- 收藏
- 关注作者
评论(0)