MySQL でストアド プロシージャとインターフェイスするときに Python で「コマンドが同期していない」エラーを解決する
Python で、Django を利用してストアドを実行する場合MySQL のプロシージャで発生する一般的なエラーは、「コマンドが同期していません。このコマンドは実行できません」です。 今。"このエラーは、トランザクションがまだ進行中のプロシージャ呼び出しに続いて 2 番目のステートメントを実行しようとすると発生します。
この問題を解決するには、プロシージャの実行に使用したカーソルを閉じて、その前に新しいカーソルを作成することが重要です。後続のステートメントの実行:
cursor.close() cursor = connection.cursor()
プロシージャ呼び出しの結果をフェッチした直後にカーソルを閉じることができます。結果セットは影響を受けず、引き続きアクセスできます。
例として単純化された MySQL プロシージャを考えてみましょう。
delimiter $$ create procedure my_mysql_procedure(p_page_id int) begin select 1 from dual; end$$ delimiter ;
Python 内では、実行しようとすると「コマンドが同期していません」というエラーが発生します。次のコードに示すように、プロシージャを呼び出した後に別のステートメントを実行します。
cursor.callproc('my_mysql_procedure', [some_id,]) result = cursor.fetchall() for r in result: do something cursor.execute("select * from some_table") result = cursor.fetchall()
By close andプロシージャ呼び出し後にカーソルを再度開くと、エラーが解消され、後続のステートメントは問題なく実行できるようになります。このソリューションにより、MySQL は正しいコマンド シーケンスを維持し、後続のデータベース操作をシームレスに実行できるようになります。
以上がMySQL ストアド プロシージャの使用時に Python で発生する「コマンドが同期していない」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。