ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在openGauss使用psycopg2驱动

2021-05-12 23:56:06  阅读:336  来源: 互联网

标签:PostgreSQL psycopg2 编译 libpq 驱动 openGauss md5


psycopg2 介绍

psycopg2 是一款PostgreSQL的Python驱动包,是PostgreSQL官方唯一指定与支持的Python驱动,也是使用最广泛的、最稳定的PostgreSQL Python driver.

psycopg2在openGauss上的问题

由于openGauss 对原生PostgreSQL的通信协议进行了安全加固,这导致与PostgreSQL的默认通信协议互相不兼容了,因此,使用psycpog2 的PostgreSQL原生版本默认是不能连接openGauss的。会报类似下述错误:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

通过修改GUC进行规避

涉及的GUC参数是password_encryption_type,PostgreSQL默认的加密方式是md5,由于md5已经不安全了,为了提高openGauss的安全能力,openGauss支持sha256, 并且默认是sha256的加密方式,这就导致了上述报错。但是openGauss并没有删除md5的加密和验证逻辑,因此,是可以通过修改该GUC参数开启md5加密方式的。

开启方法:

gs_guc reload -D $PGDATA -c "password_encryption_type = 1"

一定要在设置完上述参数后,再新建用户.

然后就可以使用该新建用户登录数据库了。

通过替换libpq解决问题

使用md5是存在一点点风险的,如果想要使用更安全的加密算法,则必须要替换PostgreSQL原生的libpq了。方法如下:

  1. 通过pip安装PostgreSQL的python驱动:pip install psycopg2-binary

  2. 切换到psycopg2的安装目录中,一般是在/$PYTHONINSTALL/lib/pythonx.x/site-packages/psycopg2

  3. 执行ldd ./_psycopg.cpython-37m-x86_64-linux-gnu.so, 该文件名供参考

  4. 将openGauss的lib目录下的libpq及相关依赖so文件拷过来,替换掉此处PostgreSQL原生的同名文件即可。

通过重新编译psycopg2 解决问题

除手动替换之外,还可以在已经安装好openGauss的环境中通过psycopg2的源代码编译出包,这样经过编译的psycopg2包就会自带openGauss的libpq及其依赖文件,也更方便打包出包。

注意:

  1. 如果环境中已经安装过PostgreSQL了,要确保openGauss库文件的路径更优先,即LD_LIBRARY_PATH中的位置在前。

  2. libpq.so 还有很多依赖文件,这些文件包括一些算法库等,如果需要发布,要一起发布。可通过ldd命令查看依赖列表。

编译方法:

  1. 在环境中安装openGauss,并配置好环境变量;
  2. 下载psycopg2的源代码,切换到源代码根目录中;
  3. 执行 python setup.py build 命令
  4. 此时一般会报错,提示内容是版本校验不匹配,通过修改setup.py中的相应位置,把这个错屏蔽掉即可。也可以通过sed命令进行版本号替换(大约440行的位置):sed -i "s/(pgmajor, pgminor, pgpatch)/(9, 2, 4)/g" setup.py
  5. 再次执行步骤3;
编译好后会在跟目录下生成 build 子目录,内部即是编译后的包。


欢迎访问openGauss官方网站

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

openGauss开源社区官方网站:

https://opengauss.org

openGauss组织仓库:

https://gitee.com/opengauss

openGauss镜像仓库:

https://github.com/opengauss-mirror

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

扫码关注我们

微信公众号|openGauss

微信社群小助手|openGauss-bot



本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签:PostgreSQL,psycopg2,编译,libpq,驱动,openGauss,md5
来源: https://blog.51cto.com/u_15157671/2772609

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有