ホームページ >データベース >mysql チュートリアル >Python の `cursor.stored_results()` を使用して MySQL ストアド プロシージャから結果を取得するにはどうすればよいですか?
Python カーソルを使用したストアド プロシージャからの結果の取得
この記事では、Python を使用した MySQL ストアド プロシージャ呼び出しからの結果の取得の問題について説明します。カーソル。データベースへの接続が成功し、通常の SQL クエリでcursor.execute()を使用したにもかかわらず、cursor.fetchall()またはcursor.fetchone()を使用してストアド プロシージャ呼び出しから結果をフェッチしようとすると、エラー「mysql. Connector.errors.InterfaceError: 取得する結果セットがありません。"
ソリューション
解決策は、cursor.stored_results() を使用して結果セットを取得することです。このメソッドは、使用可能な結果セットを反復処理し、プログラマが目的の結果セットを操作できるようにします。
次のコードは、正しいアプローチを示しています。
import mysql.connector cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb') cnx._open_connection() cursor = cnx.cursor() cursor.callproc("getperson", [1]) for result in cursor.stored_results(): people = result.fetchall() for person in people: print(person) cnx.close()
このコードは、保存されている結果セットから結果を正常にフェッチします。遭遇せずに手続き
考慮事項
MySQL Python コネクタは、複数の SELECT ステートメントがない場合でも複数の結果セットを割り当てる可能性があることに注意してください。この割り当ては、ストアド プロシージャに INOUT 変数と OUT 変数が含まれていないために発生する可能性があります。それにもかかわらず、cursor.stored_results() を使用すると、この潜在的な割り当てが効果的に処理され、結果を正常に取得できるようになります。
以上がPython の `cursor.stored_results()` を使用して MySQL ストアド プロシージャから結果を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。