Python MySQL: ストアド プロシージャ実行時の「コマンドが同期していない」エラーを解決する
Python プログラミングで、Django を利用してストアド プロシージャを実行する場合MySQL データベース内で、一部のユーザーが「コマンドが同期していません。現在このコマンドを実行できません」というメッセージに遭遇することがあります。プロシージャを呼び出した後、後続のステートメントを実行しようとするとエラーが発生します。
このエラーは通常、コミットメント アクションを実行せずにプロシージャ呼び出しに続いて非選択ステートメント (更新操作や削除操作など) を実行しようとしたときに発生します。
次のコード例を考えてみましょう。
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()
ストアド プロシージャの実行後、接続は「非同期」になります。最初にカーソルを閉じて再度開くことなく、選択以外の操作が試行された場合。
この問題を解決するには、ストアド プロシージャから結果を取得した直後にカーソルを閉じることをお勧めします。
cursor.close() cursor = connection.cursor()
新しいカーソルを再度開くと、接続がリセットされて正しく同期され、後続のステートメントが意図したとおりに実行できるようになります。プロシージャ呼び出しから取得した結果セットは、カーソルを閉じた後もアクセス可能なままであることに注意することが重要です。
以上がPython および MySQL ストアド プロシージャの使用時に発生する「コマンドが同期していません」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。