2

我目前正在尝试使用 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 连接起来,任何提示都会非常有帮助。

这个问题是相关的:

通过 Unix Box 中的 pyodbc 和 pandas.io.sql 与非 root 用户进行 DB2 连接

4

3 回答 3

5

如果你想使用 pyodbc,你需要:

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

在您的情况下,您需要安装 DB2 Data Server Driver for ODBC and CLI、DB2 Data Server Runtime Client 或 DB2 Data Server 客户端,并在 DB2 客户端中定义与远程 DB2 数据库的连接。

安装/配置安装在您的系统上的 ODBC 驱动程序管理器(例如,UnixODBC)

您必须向驱动程序管理器注册 IBM DB2 客户端 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 与 connect 语句一起使用:

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

我不确定是否可以将无 DSN 连接与 pyodbc 和 DB2 一起使用。

于 2013-08-06T20:36:20.260 回答
0

我今天在 Conda 环境中遇到了类似的情况。 这篇文章帮助我推进驱动程序配置。最初有疑问为什么有两个文件..但后来我花了一些时间才明白。因此,如果将来有人阅读,我会发布。

即 docker 容器“daskdev/dask”上的 Pyodbc+db2,它附带 conda python env 并手动安装 db2、pyodbc 驱动程序。

conda install pyodbc -y
conda install -c conda-forge ibm_db -y

供参考 :

/etc/odbcinst.ini用于驱动程序配置的文件。

/etc/odbc.ini用于数据库配置的文件。

通过使用 pyodbc,您可以调用内部连接驱动程序的数据库连接。

于 2021-05-24T11:04:13.673 回答
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)
于 2015-10-01T16:55:12.357 回答