pyodbc从DB2存储过程返回多个游标(pyodbc return multiple cursor

2019-09-28 00:13发布

我有一个调用从DB2数据库存储过程的Python程序。 我使用的results = cursor.fetchall()来处理我的存储过程的结果。 然而,我的存储过程返回两个光标。 results只包含第一个。 我需要一种方法来遍历尽可能多的游标,因为我想要的。 我希望fetchmany()将是我的答案,但事实并非如此。

我真正需要的是能够做多个结果集,因为我写作只能调用一个存储过程的程序。 它将采取了很多回去,使其能够调用两个。 除了与这些东西我需要10个光标返回。 一切都是动态的,所以应用程序不知道它正在运行的程序,它只是获取数据,并将其吐到Excel中不知道的意思。 我需要一个光标数据,另一个光标针对不同类型的计数和总计。

请帮忙。 让我知道如果你需要任何更多信息,没想到复杂的代码是必要的,因为我找的,因为我已经做了谷歌搜索我的份额内置的功能,要做到这一点,或者甚至一个不同的库,它看起来像pyodbc不会为DB2做到这一点。 DB2是一个要求:(

Answer 1:

使用光标的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()将返回真,如果其他结果集可用,以及随后的游标提取方法将从下一集返回行。 如果没有额外的集可用该方法返回无。



Answer 2:

只是为了记录一个小的简化:

while True:    
    rows = cursor.fetchall()
    # process all result sets in the same place
    if not cursor.nextset():
        break    


文章来源: pyodbc return multiple cursors from stored procedure with DB2