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

举报
西装暴徒_Michael 发表于 2024/12/26 11:47:40 2024/12/26
【摘要】 gino 是一个基于 async/await 语法的异步 ORM(对象关系映射)库,专为 Python 的异步框架(如 Sanic、FastAPI 和 aiohttp)设计。这个任务的主要工作是完成 gino 连接 GaussDB 的验证工作。

这个任务的主要工作是完成 gino 连接 GaussDB 的验证工作。主要是需要花时间熟悉 gino 的底层代码逻辑和基本使用方法,下面介绍下适配过程中的一些关键步骤。

开发过程

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

python -m venv yourVenvName

2、fork代码 https://github.com/python-gino/gino 到个人仓库,然后再进入虚拟环境,clone代码。
3、在虚拟环境中,安装gino库:

pip install gino

4、安装所需的其他库

pip install django==3.2.25

注意:配置环境的时候,一定要进入到虚拟环境中后,再进行环境的安装!

5、购买GaussDB数据库
6、设置Django下的settings.py里的database的配置

GINO_DATABASE_URL = 'postgres://username:password@ip:port/db_name'

7、根据官网的Demo:https://python-gino.org/docs/en/master/tutorials/tutorial.html ,开发好urls.pyviews.pymodels.py的代码(详见,请移步:https://gitcode.com/michael_chen/ginoDemo/overview) ,就可以启动服务了

8、启动Django服务

python manage.py runserver 0.0.0.0:yourPort

9、验证数据,经过测试,可以通过API对GaussDB的数据CRUD操作。
User表的数据:

  • get-all:
    获取所有用户
  • get-one:
    获取单个用户
  • post:
    新增用户
  • put:
    修改用户
  • delete:
    删除用户

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

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

开发总结

因gino库对于PostgresDB的数据库驱动使用的是asyncpg,因此不兼容GaussDB提供的psycopg2驱动。经验证,需要修改GaussDB的参数——password_encryption_type(将默认值2,改为1)。修改后,可以实现对GaussDB的适配。
希望GaussDB官方,后续能够完善相关的驱动,方便更多开源软件,使用GaussDB,降低使用者的学习成本。

  • 踩过的坑:
    • 代码信息:await db.gino.create_all()这段代码,创建数据表没有成功。
    • 思考过程:当时质疑了是不是这段代码有问题,查阅了官方文档,发现没有问题,后来,在排查db对象时,发现问题就在db对象身上。
    • 解决方案:因在多个py文件中需要使用db对象,如:models.pyviews.py中。我们需要注意的是——我们实例化db对象(db = Gino())后,在其他的py文件中,要是同一个db对象(通过导入的方式),否则,就会出现创建数据表,或者对数据操作无效的问题。

资源清单

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