我下载了Python 2.7( python-2.7.1.amd64.msi )和pyodbc,这是用于连接DB2数据库的python扩展模块(即 pyodbc-2.1.8.win- AMD64的py2.7.exe )。
我编写了如下所示的示例脚本。
import csv
import pyodbc
conn = pyodbc.connectpyodbc.connect('DRIVER={DB2};SERVER=localhost;DATABASE=DBT1;UID=scott;PWD=tiger;')
curs = conn.cursor()
curs.execute('select count(edokimp_id) from edokimp')
print curs.fetchall()
脚本抛出以下错误
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')
由于我是Python的新手,我从错误中意识到我需要为pyodbc下载IBM DB2驱动程序,因此在Google上进行了大量搜索,但找不到任何内容。
如果您能指出我可以下载驱动程序的网站,然后向我解释如何配置/加载驱动程序,我将不胜感激。
如果是Java
我是Python的新手,所以如果您能通过Python中的示例告诉我相关的步骤,我将不胜感激。
答案 0 :(得分:1)
您可以在项目主页上获取PyDB2 driver。
如果遇到官方Python的编译问题,ActivePython是Windows上一个很好的Python替代版本。
编辑:如果它要求您提供DB2标头,则需要获取IBM Data Server Client for ODBC and CLI。
答案 1 :(得分:0)
使用pyodbc 确实有效。我认为你有一个错误的连接字符串。经过一些研究和测试后,我用这段代码解决了:
con = pyodbc.connect('DRIVER=iSeries Access ODBC Driver;SYSTEM=10.0.0.1;UID=bubi;PWD=xyz;DBQ=DEFAULTSCHEMA;EXTCOLINFO=1')
cur = con.cursor()
cur.execute('select * from MYTABLE')
row = cur.fetchone()
if row:
field1 = row[0]
field2 = row[1]
# etc...
如您所见不需要在您的系统上配置DSN 。
答案 2 :(得分:0)
这个pyodbc的连接字符串,适用于我:
conexion_str = 'SYSTEM=%s;db2:DSN=%s;UID=%s;PWD=%s;DRIVER=%s;' % (self._SYSTEM, self._DSN, self._UID, self._PWD, self._DRIVER)
self._cnn = pyodbc.connect(conexion_str)