2011-08-31 69 views
1

我有一個從db2數據庫調用存儲過程的python程序。我正在使用results = cursor.fetchall()來處理我的存儲過程的結果。但是,我的存儲過程返回兩個遊標。 results只包含第一個。我需要一種方法來循環使用盡可能多的遊標。我希望fetchmany()將是我的答案,但事實並非如此。pyodbc從存儲過程返回多個遊標與DB2

我真的需要能夠做多個結果集,因爲我正在編寫的程序只能調用一個存儲過程。要回去並使其能夠打電話,需要很多工作。除了這些東西之一,我需要使10個遊標返回。一切都是動態的,所以應用程序不知道它正在運行什麼程序,它只是獲取數據並將其吐到不知道意義的excel中。我需要一個遊標來存放數據,其他遊標則需要不同類型的計數和總數。

請幫忙。讓我知道如果你需要更多的信息,我不認爲詳細的代碼是必要的,因爲我正在尋找一個內置的函數來做到這一點,或者甚至可能是一個不同的庫,因爲我已經完成了我的谷歌搜索的份額,它看起來像pyodbc不會爲DB2執行此操作。 DB2是一個要求:(

回答

4

使用光標的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。

+0

工作,謝謝你,我在那個維基,這是一個漫長的一天,我剛剛跳過這一點。 – KacieHouser

0

只是一個簡單的記錄:

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