我有一个python程序,它从db2数据库调用存储过程。我正在使用results = cursor.fetchall()
来处理我的存储过程的结果。但是,我的存储过程返回两个游标。 results
仅包含第一个。我需要一种方法来遍历尽可能多的游标。我希望fetchmany()
是我的答案,但事实并非如此。
我真的需要能够做多个结果集,因为我写的程序只能调用一个存储过程。要回去让它能够打两个电话需要很多。除了其中一件事,我需要让10个光标返回。一切都是动态的,因此应用程序不知道它正在运行什么程序,它只是获取数据并将其吐入excel而不知道其含义。我需要一个光标用于数据,而另一个光标用于不同类型的计数和总计。
请帮助。让我知道如果你需要更多的信息,我不认为精心设计的代码是必要的,因为我正在寻找一个内置的功能来做到这一点,或者甚至可能是一个不同的库,因为我已经完成了我的谷歌搜索,它看起来像pyodbc不会为DB2做这件事。 DB2是一项要求:(
答案 0 :(得分:5)
使用光标的nextset()方法:http://code.google.com/p/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。
答案 1 :(得分:0)
记录的一小部分简化:
while True:
rows = cursor.fetchall()
# process all result sets in the same place
if not cursor.nextset():
break