ホームページ > データベース > mysql チュートリアル > Python で MySQL ストアド プロシージャから結果を適切に取得する方法

Python で MySQL ストアド プロシージャから結果を適切に取得する方法

DDD
リリース: 2024-12-01 04:55:17
オリジナル
475 人が閲覧しました

How to Properly Retrieve Results from MySQL Stored Procedures in Python?

Python カーソルを使用した MySQL ストアド プロシージャの呼び出し

Python アプリケーションで MySQL ストアド プロシージャを利用する場合、結果の取得を適切に処理することが重要です。単純そうに見えますが、プロシージャから結果を取得すると、予期しないエラーが発生する可能性があります。

一般的な課題は、cursor.fetchall() の使用時に「フェッチする結果セットがありません」という例外が発生することです。これは、ストアド プロシージャが複数の結果セットを返すことが多く、cursor.fetchall() が 1 つのセットのみを反復処理するように設計されているために発生します。

この問題を解決するには、対象の特定の結果セットを取得する必要があります。これは、結果セットのジェネレーターを返すcursor.stored_results() メソッドを使用して実行できます。各結果セットは、fetchall() を使用して個別にフェッチできます。

for result in cursor.stored_results():
    people = result.fetchall()
ログイン後にコピー

特定のシナリオでは、cursor.execute() の使用時に「複数のクエリを含むステートメントには cmd_query_iter を使用してください」というエラーが発生する場合もあります。これは、コネクタがプロシージャ呼び出しを複数のクエリ ステートメントとして誤って解釈するために発生します。

この問題を修正するには、複数のクエリを実行するときに multi=True パラメータを明示的に設定することをお勧めします。これにより、コネクタがそのようなシナリオを正しく処理できるようになります。

cursor.execute("call getperson(1)", multi=True)
ログイン後にコピー

これらのガイドラインに従うことで、ストアド プロシージャから効果的に結果を取得し、必要に応じて複数の結果セットを処理できます。

以上がPython で MySQL ストアド プロシージャから結果を適切に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート