pyodbc.Error'IM002'连接到DB2

时间:2010-12-15 16:30:32

标签: python db2 pyodbc

我下载了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

  • 驱动程序将以 ojdbc.jar 的形式发送,该文件将被复制到 lib 目录,该目录将在classpath
  • 更改配置文件
  • 从Java Class引用DataSource

我是Python的新手,所以如果您能通过Python中的示例告诉我相关的步骤,我将不胜感激。

3 个答案:

答案 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)