2013-08-02 165 views
1

我目前正在尝试使用pyodbc从python程序连接DB2。由于驱动程序尚未安装在服务器中,我从IBM网站下载了它,但我不确定如何使用pyodbc进行连接。pyodbc连接到DB2

,我正在使用的代码是:

cnx = pyodbc.connect(
     'Driver={IBM DB2 ODBC Driver}; ' 
     'Hostname=hostname; ' 
     'Port=50100; ' 
     'Protocol=TCPIP; ' 
     'Database=db_name; ' 
     'CurrentSchema=schema; ' 
     'UID=user_id; ' 
     'PWD = passw;' 
     ) 

不知道如何将它与我刚下载任何暗示将是非常有益的驱动程序和CLI连接。

这个问题是相关的:如果你想使用pyodbc

DB2 connection through pyodbc and pandas.io.sql in Unix Box with non-root

回答

3

,你将需要:

安装/配置供应商的ODBC驱动程序。

对于您的情况,您需要安装用于ODBC和CLI的DB2数据服务器驱动程序,DB2数据服务器运行时客户机或DB2数据服务器客户机,并定义到DB2客户机中远程DB2数据库的连接。

安装/配置系统(例如,unixODBC数据)

您必须注册驱动程序管理器的IBM DB2客户端ODBC驱动程序安装的ODBC驱动程序管理器。 (即在/etc/odbcinst.ini)。

对于我的系统(具有数据服务器客户端),该条目是这样的:

[DB2] 
Description = DB2 Driver 
Driver  = /home/db2inst1/sqllib/lib/libdb2.so 
FileUsage = 1 
DontDLClose = 1 

设置为你的数据库DSN。

您可以在/etc/odbc.ini(系统DSN)或$HOME/.odbc.ini(用户DSN)中执行此操作。

$HOME/.odbc.ini样子:

[SAMPLE] 
Driver = DB2 

有了这一切,你应该能有一个连接语句中使用pyodbc:

cnx = pyodbc.connect('DSN=SAMPLE; UID=user; PWD=password') 

我不知道,如果可以使用pyodbc和DB2的无DSN连接。我

+1

它可以使用与pyodbc和DB2 DSN的连接,我已经配置它。您只需使用连接字符串,如“DRIVER = {IBM DB2 ODBC DRIVER}; HOSTNAME =主机名; DATABASE = db_name; UID =用户; PWD =密码; PROTOCOL = TCPIP; PORT =端口”。 –

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)