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