Maison >base de données >tutoriel mysql >Comment corriger l'erreur « Commandes désynchronisées » lors de l'utilisation de procédures stockées Python et MySQL ?

Comment corriger l'erreur « Commandes désynchronisées » lors de l'utilisation de procédures stockées Python et MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-23 06:18:19583parcourir

How to Fix the

Python MySQL : résolution de l'erreur « Commandes désynchronisées » lors de l'exécution de procédures stockées

Dans la programmation Python, lors de l'utilisation de Django pour exécuter des procédures stockées dans une base de données MySQL, certains utilisateurs rencontrent l'erreur « commandes désynchronisées ; vous ne pouvez pas exécuter cette commande maintenant » lorsqu'ils tentent d'exécuter des instructions ultérieures après avoir appelé un procédure.

Cette erreur survient généralement lors de la tentative d'exécution d'une instruction non-sélection (par exemple, une opération de mise à jour ou de suppression) après l'appel de procédure sans effectuer une action d'engagement.

Considérez le code suivant exemple :

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()

Après l'exécution de la procédure stockée, la connexion devient "désynchronisée" si des opérations non sélectionnées sont tentées sans d'abord fermer et rouvrir le curseur.

Pour résoudre ce problème, il est recommandé de fermer le curseur immédiatement après avoir récupéré les résultats de la procédure stockée :

cursor.close()

cursor = connection.cursor()

La réouverture d'un nouveau curseur garantit que la connexion est réinitialisée et synchronisé correctement, permettant aux instructions suivantes de s'exécuter comme prévu. Il est important de noter que l'ensemble de résultats obtenu à partir de l'appel de procédure reste accessible après la fermeture du curseur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn