如何解决使用 pyodbc
我正在尝试使用 pyodbc 和 ibm db2 odbc 驱动程序连接到带有 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:\Users\tca\Desktop\ScriptingSTuff\pydata.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=42705\r\n (-1013) (SQLDriverConnect)')
有什么想法吗?
这都是在win10下
编辑: 添加此“database='s10c38ft'”,
import pyodbc
connection = pyodbc.connect(
driver='{IBM DB2 ODBC DRIVER}',system='192.168.1.100,8471',database='s10c38ft',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')
如果这不起作用,主要有两种可能:
-
您使用的是旧的 ODBC 驱动程序。如果您使用旧的 iSeries Access(在这种情况下驱动程序名称为
iSeries Access ODBC Driver
)或什至更旧的 Client Access(驱动程序名称Client Access ODBC Driver (32-bit)
),就会发生这种情况。如果您为驱动程序选择合适的名称,它将起作用。 -
您使用的 ODBC 驱动程序不适用于 IBM i。 Db2 family 中最常用的成员是 Db2 for LUW(Linux、Unix、Windows),但还有其他的。这些都不适合你。
您可以通过调用 pyodbc.drivers()
找到已安装的确切 ODBC 驱动程序名称的列表。如果你没有我上面提到的任何一个名字,那么你就没有合适的驱动程序。您需要的 ODBC 驱动程序是 here 中描述的那个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。