首页 > 解决方案 > 如何在 Python 中连接到 DB2 数据库?

问题描述

我正在尝试将 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 文档对此帮助不大,有人知道任何可能的解决方案吗?

标签: pythonpython-3.xdb2

解决方案


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

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

在此处输入图像描述

然后,您可以连接到它:

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

要获取表,您可以使用:

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

 

推荐阅读