Python pyodbc与DB2的连接
我目前正在尝试使用pyodbc从python程序连接DB2。由于驱动程序尚未安装在服务器中,我从IBM网站下载了它,但我不确定如何使用pyodbc进行连接 我使用的代码是:Python pyodbc与DB2的连接,python,python-2.7,db2,driver,Python,Python 2.7,Db2,Driver,我目前正在尝试使用pyodbc从python程序连接DB2。由于驱动程序尚未安装在服务器中,我从IBM网站下载了它,但我不确定如何使用pyodbc进行连接 我使用的代码是: cnx = pyodbc.connect( 'Driver={IBM DB2 ODBC Driver}; ' 'Hostname=hostname; ' 'Port=50100; ' 'Protocol=TCPIP; ' 'Database=db
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,您需要: 安装/配置供应商ODBC驱动程序。 在本例中,您需要安装用于ODBC和CLI的DB2数据服务器驱动程序、DB2数据服务器运行时客户机或DB2数据服务器客户机,并在DB2客户机中定义到远程DB2数据库的连接 安装/配置系统上安装的ODBC驱动程序管理器(例如UnixODBC) 必须向驱动程序管理器注册IBM DB2客户机ODBC驱动程序。(即在
/etc/odbcinst.ini
中)
对于我的系统(具有Data Server客户端),条目如下所示:
[DB2]
Description = DB2 Driver
Driver = /home/db2inst1/sqllib/lib/libdb2.so
FileUsage = 1
DontDLClose = 1
[SAMPLE]
Driver = DB2
为数据库设置DSN。
您可以在/etc/odbc.ini
(系统DSN)或$HOME/.odbc.ini
(用户DSN)中执行此操作
我的$HOME/.odbc.ini
如下所示:
[DB2]
Description = DB2 Driver
Driver = /home/db2inst1/sqllib/lib/libdb2.so
FileUsage = 1
DontDLClose = 1
[SAMPLE]
Driver = DB2
所有这些就绪后,您应该能够将pyodbc与connect语句一起使用:
cnx = pyodbc.connect('DSN=SAMPLE; UID=user; PWD=password')
我不确定是否可以对pyodbc和DB2使用DSN-less连接。这个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)
我今天在康达环境公司也遇到了类似的情况。 这篇文章帮助我进一步了解驱动程序配置。最初有疑问为什么有两个文件。。但后来我花了一些时间才明白。因此,如果将来有人阅读,我会发帖 i、 e.Pyodbc+db2-on-docker容器“daskdev/dask”,它随conda-python-env一起提供,并手动安装db2、Pyodbc驱动程序 供参考: 用于驱动程序配置的文件
/etc/odbcinst.ini
用于数据库配置的文件/etc/odbc.ini
通过使用pyodbc,您可以调用数据库连接,它在内部连接驱动程序。可以使用pyodbc和DB2的无DSN连接,我已经对其进行了配置。您只需要使用一个连接字符串,例如“DRIVER={ibmdb2odbcdriver};HOSTNAME=HOSTNAME;DATABASE=db_name;UID=user;PWD=password;PROTOCOL=TCPIP;PORT=PORT”。