当前位置: 首页 > 图灵资讯 > 技术篇> pyodbc连接gaussdb

pyodbc连接gaussdb

来源:图灵教育
时间:2023-06-12 09:18:33

说明

由于环境限制,PG需要同时连接、opengauss、gaussdb,由于使用的libpq版本不同,使用psycogp2连接无法使用。所以通过pyodbc来解决。

ODBC下载配置,上传驱动

下载gaussdb官方odbc驱动,地址: https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1660794000209/GaussDB_opengauss_client_tools.zip 找到相应版本的odbc驱动器pyodbc连接gaussdb_数据库

将odbc中的四个文件与python压缩包中的lib文件夹中的so文件复制到单个文件夹中 如下:

[root@test80 psycopg2-2.9.1]# ll /usr/local/lib/total 10052-rw-r--r-- 1 root root   18904 Jun  9 09:31 libcom_err_gauss.so.3-rw-r--r-- 1 root root 3210056 Jun  9 09:31 libcrypto.so.1.1-rw-r--r-- 1 root root  107032 Jun  9 09:31 libgcc_s.so.1-rw-r--r-- 1 root root  478216 Jun  9 09:31 libgssapi_krb5_gauss.so.2-rw-r--r-- 1 root root  161368 Jun  9 09:31 libgssrpc_gauss.so.4-rw-r--r-- 1 root root  304856 Jun  9 09:31 libk5crypto_gauss.so.3-rw-r--r-- 1 root root 1225928 Jun  9 09:31 libkrb5__gauss.so.3-rw-r--r-- 1 root root   73632 Jun  9 09:31 libkrb5support_gauss.so.0-rw-r--r-- 1 root root  417704 Jun  9 09:31 libpq.so.5.5-rw-r--r-- 1 root root  682488 Jun  9 09:31 libssl.so.1.1-rw-r--r-- 1 root root 2047472 Jun  9 09:31 libstdc++.so.6-rwxr-xr-x 1 root root    1263 Jun  9 09:12 psqlodbca.la-rwxr-xr-x 1 root root  744648 Jun  9 09:12 psqlodbca.so-rwxr-xr-x 1 root root    1263 Jun  9 09:12 psqlodbcw.la-rwxr-xr-x 1 root root  791368 Jun  9 09:12 psqlodbcw.so

将libpq等so文件复制到单个文件夹中,不与其它libpq混淆。

修改ODBC配置文件

/etc/odbcinst.ini 内容如下:

[root@test80 psycopg2-2.9.1]# cat /etc/odbcinst.ini [ODBC Driver 17 for SQL Server]Description=Microsoft ODBC Driver 17 for SQL ServerDriver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.2.1UsageCount=1[GaussMPP]Description=HUAWEI ODBC Driver for GausDBriver64=/usr/local/lib/psqlodbcw.sosetup=/usr/local/lib/psqlodbcw.soDebug=0comlog=1usageCount=

测试

>>> import pyodbc>>> connection = pyodbc.connect("DRIVER=GaussMPP;SERVER=60.60.60.227;DATABASE=postgres;UID=root;PWD=Gauss@1#3;PORT=8000")>>> cs = connection.cursor()>>> rs=cs.fetchall()>>> print(rs)[template1, 10, 0, 'C', 'C', '1', '1', -1, 12706, '0', 1663, 'MYSQL', '{=c/rdsAdmin,rdsAdmin=CTc/rdsAdmin}', 3, 1, 'PRC'), (template0, 10, 0, 'C', 'C', '1', '0', -1, 12706, '0', 1663, 'MYSQL', '{=c/rdsAdmin,rdsAdmin=CTc/rdsAdmin}', 3, 0, 'PRC'), ('postgres', 10, 0, 'C', 'C', '0', '1', -1, 12706, '0', 1663, 'MYSQL', '{=Tc/rdsAdmin,rdsAdmin=CTc/rdsAdmin,rdsBackup=c/rdsAdmin,rdsRepl=c/rdsAdmin,root=c/rdsAdmin,rdsMetric=c/rdsAdmin}', 3, 0, 'PRC')]