Behebung des Fehlers „Befehle nicht synchron“ in Python bei der Schnittstelle mit gespeicherten Prozeduren in MySQL
In Python, während Django zum Ausführen gespeicherter Prozeduren verwendet wird Bei MySQL-Prozeduren tritt häufig der Fehler „Befehle sind nicht synchron; Sie können diesen Befehl jetzt nicht ausführen“ auf. Dieser Fehler tritt auf, wenn versucht wird, nach dem Prozeduraufruf eine zweite Anweisung auszuführen, während die Transaktion noch läuft.
Um dieses Problem zu beheben, ist es wichtig, den für die Ausführung der Prozedur verwendeten Cursor zu schließen und zuvor einen neuen zu erstellen Nachfolgende Anweisungen ausführen:
cursor.close() cursor = connection.cursor()
Der Cursor kann sofort nach dem Abrufen der Ergebnisse aus dem Prozeduraufruf geschlossen werden. Die Ergebnismenge ist davon nicht betroffen und kann weiterhin abgerufen werden.
Betrachten Sie als Beispiel eine vereinfachte MySQL-Prozedur:
delimiter $$ create procedure my_mysql_procedure(p_page_id int) begin select 1 from dual; end$$ delimiter ;
In Python würde beim Versuch der Fehler „Befehle nicht synchron“ auftreten um nach dem Aufruf der Prozedur eine weitere Anweisung auszuführen, wie in diesem Code gezeigt:
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()
Durch Schließen und erneutes Öffnen des Cursors nach dem Prozeduraufruf, Der Fehler wird behoben und nachfolgende Anweisungen können problemlos ausgeführt werden. Diese Lösung stellt sicher, dass MySQL die richtige Befehlssequenz beibehält und eine nahtlose Ausführung nachfolgender Datenbankoperationen ermöglicht.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Befehle nicht synchron' in Python bei der Verwendung gespeicherter MySQL-Prozeduren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!