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

标签 python-3.x python-2.7 ibm-midrange db2-400 django-pyodbc

任何人都知道如何在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)

最佳答案

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

c1.execute("call qcmdexc('crtlib lib(test)')")
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)')

关于python-3.x - 如何在python中建立连接以连接as400并使用参数调用任何as400程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568067/

相关文章:

python - 如何将 __repr__ 与多个参数一起使用?

python - 如何在传递参数的所有类函数调用之前/之后运行方法?

python - 一个或多个输入行的 numpy.loadtxt

java - 无法将字符集 65535 中的字节转换为日语 (5035)

ibm-midrange - 如何 "Reset"UDF DETERMINISTIC 响应?

python-3.x - 为什么我会收到错误 ModuleNotFoundError : No module named 'azure.storage' during execution of my azure python function?

python - 使用 pandas-0.24.2 面临奇怪的问题

python-2.7 - 带分类轴的 3D 图 [Python/Matplotlib]

sql - DB2使用LIMIT和OFFSET

python - 如何从源代码重建 python youtube-dl