通过 pyodbc 从 Python 连接到 Db2 时出错

Error connecting from Python to Db2 through pyodbc

我在 these instructions 之后的 Windows 10 中安装了 Db2 ODBC 驱动程序。我从 bin 文件夹中提取 C:\tools\db2cli\ 和 运行 db2cli install -setup 中的驱动程序文件夹。

这似乎工作正常,因为 ODBC 驱动程序已在 Windows:

中注册

但是当我尝试从 Jupyter 连接时,我收到此错误:

server = 'localhost' 
database = 'mydb' 
username = 'db2inst1' 
password = 'abc123' 
driver = 'IBM DB2 ODBC DRIVER - C_tools_db2cli'
conn = pyodbc.connect('DRIVER={' + driver +'};SERVER='
         + server + ';DATABASE=' + database + ';UID=' 
         + username + ';PWD=' + password + ';PROTOCOL=TCPIP;PORT=50000' )

Error Traceback (most recent call last) in 4 password = 'abc123' 5 driver = 'IBM DB2 ODBC DRIVER - C_tools_db2cli' ----> 6 conn = pyodbc.connect('DRIVER={' + driver +'};SERVER=' 7 + server + ';DATABASE=' + database + ';UID=' 8 + username + ';PWD=' + password + ';PROTOCOL=TCPIP;PORT=50000' )

Error: ('HY000', '[HY000] [IBM][CLI Driver] SQL1042C An unexpected system error occurred. SQLSTATE=58004\r\n (-1042) (SQLDriverConnect); [HY000] [IBM][CLI Driver] SQL1042C An unexpected system error occurred. SQLSTATE=58004\r\n (-1042)')

我试图找到错误代码以找到解决方案,但没有成功。应该注意什么来解决这个问题?

注意:我将 C:\tools\db2cli\bin 添加到 PATH,但仍然出现相同的错误。

SERVER= 用于已编目的数据库

否则您必须使用:HOSTNAME= 如果您想指定完整的 DSN。 https://cloud.ibm.com/docs/Db2onCloud?topic=Db2onCloud-con_program&locale=fr

此问题是由于 Microsoft Windows 上某些特定配置的 clidriver 缺陷引起的。

您可以解决此问题,方法是确保 PATH 上没有任何其他 Db2 产品(clidriver\bin 除外),然后确保在启动前向 PATH 添加两个额外的目录 python.这些是这些目录的完全限定路径名:

clidriver\bin\icc64
clidriver\bin\amd64.vc12.crt

IBM 应该在某个时候为 IT34327 提供修复程序。