如何在python中建立连接以连接as400并使用参数调用任何as400程序

Mag*_*Box 5 django-pyodbc db2-400 python-2.7 python-3.x ibm-midrange

任何人都知道如何在 python 中建立连接来连接 as400 iseries 系统并使用参数调用任何 as400 程序。

例如如何通过python连接as400来创建库。我想从 python 脚本调用“ CRTLIB LIB(TEST) ”。

我可以通过 pyodbc 包连接到 DB2 数据库。

这是我连接 DB2 数据库的代码。

import pyodbc

connection = pyodbc.connect(
    driver='{iSeries Access ODBC Driver}',
    system='ip/hostname',
    uid='username',
    pwd='password')
c1 = connection.cursor()

c1.execute('select * from libname.filename')
for row in c1:
    print (row)
Run Code Online (Sandbox Code Playgroud)

Joh*_*n Y 1

如果您的 IBM i 设置允许,您可以在 SQL 中使用调用QCMDEXC 存储过程。CALL例如,

c1.execute("call qcmdexc('crtlib lib(test)')")
Run Code Online (Sandbox Code Playgroud)

QCMDEXC存储过程位于 QSYS2 中(实际的程序对象是QSYS2/QCMDEXC1),其功能与 QSYS 中熟悉的同名程序非常相似,但该存储过程专门用于通过 SQL 调用。

当然,要使该示例正常工作,您的连接配置文件必须具有创建库的适当权限。

您的 IBM i 也可能设置为允许这样做。我不知道如何启用此功能,但在我工作的地方,我们有一个分区,上面显示的示例正常完成,而另一个分区我得到了这个:

pyodbc.Error: ('HY000', '[HY000] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0901 - SQL system error. (-901) (SQLExecDirectW)')
Run Code Online (Sandbox Code Playgroud)