我有一个从 db2 数据库调用存储过程的 python 程序。我正在使用 results = cursor.fetchall()
处理我的存储过程的结果。但是,我的存储过程返回两个游标。 results
只包含第一个。我需要一种方法来循环遍历任意数量的游标。我希望fetchmany()
将是我的答案,但事实并非如此。
我需要能够处理多个结果集,因为我正在编写的程序只能调用一个存储过程。返回并使其能够调用两个需要很多。除了这些东西之一,我需要让 10 个游标返回。一切都是动态的,因此应用程序不知道它正在运行什么程序,它只是获取数据并将其吐入excel而不知道其含义。我需要一个用于数据的游标,另一个用于不同类型的计数和总计的游标。
我正在寻找一个内置函数来做到这一点,或者甚至是一个不同的库,因为我已经完成了我的谷歌搜索,看起来 pyodbc 没有为 DB2 这样做。 DB2 是一个需求。
最佳答案
使用 nextset()
光标方法:https://github.com/mkleehammer/pyodbc/wiki/Cursor#nextset
示例代码:
# fetch rows from first set
rows = cursor.fetchall()
# process first set rows here
# advance to next result set
while (cursor.nextset()):
# fetch rows from next set, discarding first
rows = cursor.fetchall()
# process next set rows here
nextset()
将返回 True
如果额外的结果集可用,并且后续的游标提取方法将从下一个集中返回行。该方法返回 None
如果没有额外的套装可用。
关于stored-procedures - pyodbc 从使用 DB2 的存储过程返回多个游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263781/