如何在 Python 中连接到 DB2 数据库?

How do I make a connection to a DB2 database in Python?

我正在尝试使用 Python 连接到使用 DB2 的 AS/400 系统。我实际拥有的这段代码是:

from ibm_db import connect

connection = connect('DATABASE=<DB>;'
                     'HOSTNAME=<HOST_IP>;'
                     'PORT=<PORT>;'
                     'PROTOCOL=TCPIP;'
                     'UID=<USER>;'
                     'PWD=<PASSOWRD>;', '', '')

所有这些都是我的信息。

但是当我尝试建立连接时,我从 Python 终端收到此错误:

Exception: [IBM][CLI Driver] SQL30081N  A communication error has been detected. Communication protocol being used: "TCP/IP".  Communication API being used: "SOCKETS".  Location where the error was detected: "<IP>".  Communication func SQLCODE=-30081the error: "connect".  Protocol specific error code(s): "10061", "*", "*".  SQLSTATE=08001

我已经在 AS/400 中检查端口正在使用“netstat”命令侦听。

IBM 文档对此没有帮助,有人知道任何可能的解决方案吗?

连接到 db2 数据库的最有效方法是通过 ODBC。

如果您在 windows 下工作,首先您应该在“用户 DSN”选项卡下创建一个新的 odbc 连接(即 "AS400"

然后,您可以连接到它:

import pyodbc 
conn_db2 = pyodbc.connect('DSN=AS400; UID=my_id; PWD=my_password')

要获取 table,您可以使用:

import pandas as pd
query = f'''SELECT * FROM mytable'''
table = pd.read_sql(query, conn_db2)
conn_sql.close()