Tortoise-ORM适配GaussDB开源验证任务心得
这个任务的主要工作是完成 Tortoise-ORM连接 GaussDB 的验证工作。主要是需要花时间熟悉 Tortoise-ORM 的底层代码逻辑和基本使用方法,下面介绍下适配过程中的一些关键步骤。
开发过程
1、为了避免开发环境混乱无序,建议使用虚拟环境开发:python -m venv yourVenvName
2、fork代码 https://github.com/tortoise/tortoise-orm 到个人仓库,然后再进入虚拟环境,clone代码。
3、使用 pyproject.toml 来注册 Tortoise-ORM 到python的site-packages包里
pip install -e .
注意此命令在 Tortoise-ORM 的根目录执行,即 pyproject.toml 的同级目录
4、购买GaussDB数据库
5、安装所需的依赖库
pip insatll psycopg
pip install django==3.2.25
6、设置Django下的settings.py里的database的配置
# Tortoise ORM 配置
TORTOISE_ORM = {
'connections': {
'default':
'psycopg://username:password@ip:port/DB_name', # using the psycopg DB driver
},
'apps': {
'framework_core': {
'models': ['framework_core.models'],
'default_connection': 'default',
},
},
}
7、根据官网的Demo(https://tortoise.github.io/getting_started.html),开发好urls.py、views.py、models.py的代码(详见,请移步:https://gitcode.com/michael_chen/tortoise-orm/overview),就可以启动服务了
8、启动服务,python manage.py runserver 0.0.0.0:yourPort
9、验证数据,经过测试,可以通过API对GaussDB的数据CRUD操作。
User表的数据:
get-all:
get-one:
post:
put:
delete:
10、登录GaussDB提供的管理平台查看是否创建数据库,以及创建的数据表数据是否符合预期,经检查符合预期
至此,经验收,Tortoise-ORM 所生成的数据符合预期,Tortoise-ORM 适配GaussDB,使用pip提供的psycopg驱动,可以完成基本使用,后续有因方言等问题,持续更新。
开发总结
Tortoise-ORM的官方文档说明,使用PostgresDB有两种驱动可以选择`asyncpg`和`psycopg`,本任务是为了适配GaussDB,首先用GaussDB提供的`psycopg2`驱动包,经实验。运行Tortoise-ORM会出现不兼容的问题(报错),后来查阅资料得知`psycopg`和`psycopg2`不是一回事(感兴趣的可以移步:https://doc.rockdata.net/psycopg/basic/from_pg2/),因Tortoise-ORM只支持`psycopg`驱动,所以,只能使用pip安装`psycopg`驱动进行适配验证任务。经验证,需要修改GaussDB的参数——password_encryption_type(将默认值2,改为1)。修改后,可以实现对GaussDB的适配。
希望GaussDB官方,后续能够完善相关的驱动,方便更多开源软件,使用GaussDB,降低使用者的学习成本。
验收材料
交付件清单
- (1) 博客的地址: https://bbs.huaweicloud.com/blogs/442268
- (2) Demo仓库地址:https://gitcode.com/michael_chen/tortoise-orm/overview
资源清单
产品名称 | 产品类型 | 数据库引擎版本 | 内核引擎版本 | 实例类型 | 部署形态 | 备注 |
---|---|---|---|---|---|---|
云数据库 GaussDB | 基础版 | V2.0-8.* | 505.2.* | 集中式 | 1主2备 | 推荐 |
产品名称 | CPU架构 | 实例类型 | 公共镜像 | 镜像版本 | 备注 |
---|---|---|---|---|---|
弹性云服务器 | 鲲鹏计算 | 鲲鹏通用计算增强型 | Huawei Cloud EulerOS | Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) | 推荐 |
- 点赞
- 收藏
- 关注作者
评论(0)