使用pyodbc连接到IBMi的Db2时出现问题



im试图使用pyodbc和ibmdb2odbc驱动程序通过db2连接到as400。

import pyodbc
connection = pyodbc.connect(
driver='{IBM DB2 ODBC DRIVER}',
system='192.168.1.100',
uid='user',
pwd='pass')
c1 = connection.cursor()
#this is meaningless sql, i just want the connection
c1.execute('select * from libname.filename')
for row in c1:
print (row)

运行这个会给我这个错误

python pydata.py
Traceback (most recent call last):
File "C:UserstcaDesktopScriptingSTuffpydata.py", line 3, in <module>
connection = pyodbc.connect(
pyodbc.OperationalError: ('08001', '[08001] [IBM][CLI Driver] SQL1013N  The database alias name or database name "" could not be found.  SQLSTATE=42705rn (-1013) (SQLDriverConnect)')

有什么想法吗?

这一切都在win10 下

编辑:添加此";数据库="10c38ft";

import pyodbc
connection = pyodbc.connect(
driver='{IBM DB2 ODBC DRIVER}',
system='192.168.1.100,8471',
database='s10c38ft',
uid='user',
pwd='pass')
c1 = connection.cursor()
c1.execute('select * from libname.filename')
for row in c1:
print (row)

让它挂在闪烁的光标上,我甚至不能用CTRL+C结束它,我必须关闭cmd。

正确的驱动程序名称应该是IBM i Access ODBC Driver(但请参阅下面的注释(。除此之外,你的第一个例子是正确的:

connection = pyodbc.connect(
driver='{IBM i Access ODBC Driver}',
system='192.168.1.100',
uid='user',
pwd='pass')

如果这不起作用,有两种主要的可能性:

  1. 您使用的是旧的ODBC驱动程序。如果您使用旧的iSeries Access(在这种情况下,驱动程序名称为iSeries Access ODBC Driver(或更旧的Client Access(驱动程序名称Client Access ODBC Driver (32-bit)(,则会发生这种情况。如果你为你的司机选择了合适的名字,它就会起作用。

  2. 您使用的ODBC驱动程序不适用于IBM i。Db2家族中最常用的成员是用于LUW(Linux、Unix、Windows(的Db2,但也有其他成员。这些都不适合你。

您可以通过调用pyodbc.drivers()找到已安装的ODBC驱动程序的确切名称列表。如果你没有我上面提到的任何一个名字,那么你就没有合适的司机。您需要的ODBC驱动程序就是这里描述的驱动程序。

最新更新