sandman2适配GaussDB开源验证任务心得
第一步先看下任务计划书 https://bbs.huaweicloud.cn/blogs/437843 ,这个任务的主要工作是完成 sandman2 连接 GaussDB 的验证工作。主要是需要花时间熟悉 sandman2 的底层代码逻辑和基本使用方法,下面介绍下适配过程中的一些关键步骤。
开发过程
1、为了避免开发环境混乱无序,建议使用虚拟环境开发:python -m venv yourVenvName
2、fork代码 https://github.com/jeffknupp/sandman2 到个人仓库,然后再进入虚拟环境,clone代码。
3、安装 sandman2 适配 GaussDB 所需的驱动,使用GaussDB官网提供的驱动
4、安装 sandman2 所需的依赖仓库
pip install -r requirements.txt
5、因 sandman2 的用法,是在命令行中输入,如:`sandman2ctl postgresql+psycopg2://username:password@IP:port/DB_name` 来启动服务,so,要使用setup.py来注册 sandman2—— sandman2ctl 命令
python setup.py develop
注意此命令在 sandman2 的根目录执行,即setup.py的同级目录
6、购买GaussDB数据库(如有就略过此步)
7、在GaussDB数据库上,新建数据表(sandman2, 并不能自动创建数据库表,它只对已经存在的表进行操作)
8、启动服务
sandman2ctl postgresql+psycopg2://username:password@IP:port/DB_name
9、验证数据,经过测试,可以通过API对GaussDB的数据CRUD操作。
tasks表的数据:
get-all:
get-one:
post:
put:
delete:
10、登录GaussDB提供的管理平台查看是否创建数据库,以及创建的数据表数据是否符合预期,经检查符合预期。
至此,经验收,sandman2 所生成的数据并提供的RESTful API 符合预期,sandman2 适配GaussDB,使用GaussDB提供的psycopg2驱动,可以完成基本使用,后续有因方言等问题,持续更新。
开发总结
适配中遇到的问题点:
- SQLAlchemy的版本问题(关于SQLAlchemy的适配问题,可移步:https://bbs.huaweicloud.cn/blogs/440924):
- 原因:因 sandman2 底层依赖 SQLAlchemy 来和GaussDB交互。SQLAlchemy 使用 `pip install -e . `手动安装时,版本号后面会有'x.x.x.dev0'的后缀。sandman2 会提示版本报错。
- 解决方案:根据 sandman2 的提示,需要安装 SQLAlchemy==1.3.3 的版本,用`pip install SQLAlchemy==1.3.3`来安装,安装完毕,记得在`sqlalchemy/lib/sqlalchemy/dialects/postgresql/base.py`的2656行,修改如下代码:
m = re.match(
r"(?:(?:PostgreSQL|EnterpriseDB)\s+(\d+)\.?(\d+)?(?:\.(\d+))?(?:\.\d+)?(?:devel|beta)?)" # 匹配 PostgreSQL 或 EnterpriseDB
r"|"
r"(?:gaussdb\s+\(GaussDB Kernel\s+(\d+)\.(\d+)\.(\d+))", # 匹配 GaussDB 格式
v,
)
- 安装了requirements.txt,还会提示某些库找不到,这个根据提示报错,用pip安装即可,这里就不做赘述。
这里要说明一下,因 sandman2 本身就是 RESTful 框架,故,此验收Demo就不需要用公共Demo进行验收了。
验收材料
交付件清单
- (1) 博客的地址: https://bbs.huaweicloud.cn/blogs/441755
- (2) Demo仓库地址:https://gitcode.com/michael_chen/sqlalchemyDemoPython/overview (SQLAlchemy 地址)
资源清单
产品名称 | 产品类型 | 数据库引擎版本 | 内核引擎版本 | 实例类型 | 部署形态 | 备注 |
---|---|---|---|---|---|---|
云数据库 GaussDB | 基础版 | V2.0-8.* | 505.2.* | 集中式 | 1主2备 | 推荐 |
产品名称 | CPU架构 | 实例类型 | 公共镜像 | 镜像版本 | 备注 |
---|---|---|---|---|---|
弹性云服务器 | 鲲鹏计算 | 鲲鹏通用计算增强型 | Huawei Cloud EulerOS | Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) | 推荐 |
- 点赞
- 收藏
- 关注作者
评论(0)