ホームページ >データベース >mysql チュートリアル >Python の `cursor.stored_results()` を使用して MySQL ストアド プロシージャから結果を取得するにはどうすればよいですか?

Python の `cursor.stored_results()` を使用して MySQL ストアド プロシージャから結果を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-01 12:38:15266ブラウズ

How to Retrieve Results from a MySQL Stored Procedure using Python's `cursor.stored_results()`?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。