Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyodbc与DB2的连接_Python_Python 2.7_Db2_Driver - Fatal编程技术网

Python pyodbc与DB2的连接

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

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

我使用的代码是:

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”。