4

db2 データベースからストアド プロシージャを呼び出す Python プログラムがあります。results = cursor.fetchall()ストアド プロシージャの結果を処理するために使用しています。ただし、ストアド プロシージャは 2 つのカーソルを返します。results最初のものだけが含まれています。必要な数のカーソルをループする方法が必要です。fetchmany()私は私の答えになることを望んでいましたが、そうではありません。

私が書いているプログラムは 1 つのストアド プロシージャしか呼び出すことができないため、複数の結果セットを実行できる必要があります。戻って 2 つをコールできるようにするには、かなりの時間がかかります。これらの 1 つに加えて、10 個のカーソルを返す必要があります。すべてが動的であるため、アプリケーションは実行中の手順を認識せず、データを取得して、意味を知らずに Excel に吐き出します。データ用に 1 つのカーソルが必要で、さまざまな種類のカウントと合計用に他のカーソルが必要です。

これを行うための組み込み関数、またはおそらく別のライブラリを探しています。これは、グーグルの共有を行ったが、pyodbc が DB2 に対してこれを行わないように見えるためです。DB2 は必須です。

4

2 に答える 2

10

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追加のセットが利用できない場合、メソッドは戻ります。

于 2011-08-31T21:54:28.997 に答える