Tortoise-ORM适配GaussDB开源验证任务心得

举报
西装暴徒_Michael 发表于 2024/12/12 17:22:24 2024/12/12
【摘要】 Tortoise ORM是一个为异步Python应用设计的ORM库,它允许开发者以面向对象的方式与关系数据库进行交互,同时充分利用异步编程的优应用的性能和响应速度。这个任务的主要工作是完成 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:

tortoise-get-all.PNG

get-one:

tortoise-get-one.PNG

post:

tortoise-post.PNG

put:

tortoise-put.PNG

delete:

tortoise-delete.PNG

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

tortoise-gaussDB.PNG

至此,经验收,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,降低使用者的学习成本。


验收材料

交付件清单


资源清单

产品名称 产品类型 数据库引擎版本 内核引擎版本 实例类型 部署形态 备注
云数据库 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个月内不可修改。