pyodbc连接gaussdb

文章介绍了在环境限制下,因libpq版本冲突无法使用psycopg2连接PG、opengauss、gaussdb时,如何通过下载GaussDB的ODBC驱动并配置ODBCINST.INI文件,然后使用pyodbc进行数据库连接的步骤。通过示例展示了pyodbc.connect()的用法,证明配置成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

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

配置ODBC

下载、上传驱动

下载gaussdb官方的odbc驱动,地址:
https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1660794000209/GaussDB_opengauss_client_tools.zip
找到对应版本的odbc驱动
在这里插入图片描述

将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 Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.2.1
UsageCount=1

[GaussMPP]
Description=HUAWEI ODBC Driver for GaussDB
Driver64=/usr/local/lib/psqlodbcw.so
setup=/usr/local/lib/psqlodbcw.so
Debug=0
CommLog=1
UsageCount=1

测试

>>> 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()
>>> cs.execute("select * from pg_database")
>>> 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')]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值