使用 python 远程连接到 as400

Remote connection to as400 with python

我正在尝试通过 python3 远程连接到 AS400 中的 db2 数据库。我无法理解错误消息。我是 运行 在 spyder IDE 在 windows OS.

import ibm_db
conn=ibm_db.connect(f"DATABASE=xxxx;HOSTNAME=xxxx;PORT=21;PROTOCOL=TCPIP;UID=xxxxx;PWD=xxxxx;",'','')

connState = ibm_db.active(conn)
print(connState)

错误信息

SQLCODE=-30081][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: "10.248.11.78". Communication function detecting the error: "connect". Protocol specific error code(s): "10061", "", "". SQLSTATE=08001

我确实参考了文档https://www.ibm.com/support/pages/sql30081n-tcpip-communication-errors,但无法取得进展。我是这种连接的新手,希望得到帮助。

编辑
正如评论中所建议的那样。我使用 pyodbc 成功连接到 db2 数据库,现在我正在尝试调用存储过程。 我的存储过程有 3 个必需的输入(所有数字)和 2 个输出(均为字母数字)参数

import pyodbc
conn = pyodbc.connect('Driver={iSeries Access ODBC Driver}; '
       'SYSTEM = xx.xxx.xx.xx;'
        'Hostname=xxx; '
        'Port=21; '
        'Protocol=TCPIP; '
        'Database=MYLIB; '
        'UID=xxxxx; '
        'PWD = xxxx;'
        ,autocommit=True) 

cur = conn.cursor()
params = ("072220","0306529","10000")
cur.execute("{CALL MYLIB.MY_SP (@param1name=?, @param2name=?, @param3name=?)}",params)

错误信息

('HY000', '[HY000] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0440 - Routine MY_SP in MYLIB not found with specified parameters. (-440) (SQLPrepare)')

这是否意味着我没有正确传递我的参数?

我认为问题出在我定义参数的方式上。我需要“0”作为输出参数

import pyodbc
conn = pyodbc.connect('Driver={iSeries Access ODBC Driver}; '
       'SYSTEM = xx.xxx.xx.xx;'
        'Hostname=xxx; '
        'Port=21; '
        'Protocol=TCPIP; '
        'Database=MYLIB; '
        'UID=xxxxx; '
        'PWD = xxxx;'
        ,autocommit=True) 

cur = conn.cursor()
params = ("072220","0306529","10000",0,0)
cur.execute("{CALL MYLIB.MY_SP (?,?,?,?,?)}",params)