pyodbc使用DB2从存储过程返回多个游标

时间:2011-08-31 21:40:13

标签: stored-procedures db2 pyodbc database-cursor

我有一个python程序,它从db2数据库调用存储过程。我正在使用results = cursor.fetchall()来处理我的存储过程的结果。但是,我的存储过程返回两个游标。 results仅包含第一个。我需要一种方法来遍历尽可能多的游标。我希望fetchmany()是我的答案,但事实并非如此。

我真的需要能够做多个结果集,因为我写的程序只能调用一个存储过程。要回去让它能够打两个电话需要很多。除了其中一件事,我需要让10个光标返回。一切都是动态的,因此应用程序不知道它正在运行什么程序,它只是获取数据并将其吐入excel而不知道其含义。我需要一个光标用于数据,而另一个光标用于不同类型的计数和总计。

请帮助。让我知道如果你需要更多的信息,我不认为精心设计的代码是必要的,因为我正在寻找一个内置的功能来做到这一点,或者甚至可能是一个不同的库,因为我已经完成了我的谷歌搜索,它看起来像pyodbc不会为DB2做这件事。 DB2是一项要求:(

2 个答案:

答案 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