bansi
bansi

Reputation: 11

pyodbc.Error 'IM002' connecting to DB2

I downloaded Python 2.7 (python-2.7.1.amd64.msi) and pyodbc, the python extension module for connecting to DB2 database (i.e. pyodbc-2.1.8.win-amd64-py2.7.exe).

I wrote sample script as shown below.

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() 

The script throws following error

pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')

As I am a newbie to Python, I realized from the error that I need to download the IBM DB2 driver for pyodbc and hence searched extensively on Google but couldn't find any.

I would greatly appreciate if you could point me to the site where I can download the driver and later explain me how to configure/load the driver.

In case of Java

I am newbie to Python so I would greatly appreciate if you could let me know cooresponding steps with an example in Python.

Upvotes: 1

Views: 5398

Answers (3)

Giovani Hgo
Giovani Hgo

Reputation: 29

This connection string for pyodbc, work for me:

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)

Upvotes: 0

bluish
bluish

Reputation: 27292

It does work using pyodbc. I think you have a wrong connection string. After some research and tests I solved with this code:

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...

As you see it doesn't need a DSN to be configured on your system.

Upvotes: 0

Leo
Leo

Reputation: 1514

You can get the PyDB2 driver on the project homepage.

If you run into compilation issues with the official Python, ActivePython is a good alternate distribution of Python on Windows.

Edit: If it asks you for DB2 headers, you need to get the IBM Data Server Client for ODBC and CLI.

Upvotes: 1

Related Questions