在ibm_db.execute()之后获取结果



查看以下代码:

import ibm_db
#Authentication Details
f=open(r"C:UsersXXXXXMy Code.rc","r")
lines=f.readlines()
us=lines[0].rstrip()
pd=lines[1]
sql_file = "NNM_SQL.sql"
f = open(r"Z:MSGBACI-FAKCProjects\" + sql_file,"r")
sql = f.read()
conn_str = "DATABASE=DBMIDAS;HOSTNAME=abc.cx.dx.com;PORT=45000;PROTOCOL=TCPIP;UID="+us+";PWD="+pd+";"
conn = ibm_db.connect(conn_str,"","")
#result=ibm_db.exec_immediate(conn,sql)
stmt = ibm_db.prepare(conn,sql)
result = ibm_db.execute(stmt)
result_dict = ibm_db.fetch_assoc(result)
while result_dict is not False:
print(result_dict)
result_dict = ibm_db.fetch_assoc(result)
f.close()

此代码示例在fetch_assoc((步骤中返回以下错误。

Supplied statement object parameter is invalid

我仔细研究了一下,发现当我使用execute((语句时,结果是布尔类型的。

但当我使用exec_immediate((时,结果是DBStatement类型的结果。

我做错什么了吗?问题是,IBM知识中心中没有在"execute(("之后获取结果的示例代码

您已经传入了类型为IBM_DBStatementexecute()的对象。有关详细信息,请参阅ibm_db.execute((的API参考。因此,您需要传入结果的stmt。试试这样的东西:

conn = ibm_db.connect(conn_str,"","")
stmt = ibm_db.prepare(conn,sql)
result = ibm_db.execute(stmt)
result_dict = ibm_db.fetch_assoc(stmt)
while result_dict is not False:
print(result_dict)
result_dict = ibm_db.fetch_assoc(stmt)
f.close()

最新更新