pyodbc 连接到 DB2

Lon*_*oul 2 python db2 driver python-2.7

我目前正在尝试使用 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;'
        )
Run Code Online (Sandbox Code Playgroud)

不确定如何将它与我刚刚下载的驱动程序和 CLI 连接起来,任何提示都会非常有帮助。

这个问题是相关的:

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

Ian*_*vde 5

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

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

在您的情况下,您需要安装用于 ODBC 和 CLI 的 DB2 数据服务器驱动程序、DB2 数据服务器运行时客户端或 DB2 数据服务器客户端,并在 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
Run Code Online (Sandbox Code Playgroud)

为您的数据库设置 DSN。

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

我的$HOME/.odbc.ini样子:

[SAMPLE]
Driver = DB2
Run Code Online (Sandbox Code Playgroud)

完成所有这些后,您应该可以使用带有 connect 语句的 pyodbc:

cnx = pyodbc.connect('DSN=SAMPLE; UID=user; PWD=password')
Run Code Online (Sandbox Code Playgroud)

我不确定是否可以在 pyodbc 和 DB2 中使用无 DSN 的连接。

  • 可以使用 pyodbc 和 DB2 的无 DSN 连接,我已经配置了它。您只需要使用连接字符串,例如 "DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=hostname;DATABASE=db_name;UID=user;PWD=password;PROTOCOL=TCPIP;PORT=port" 。 (2认同)