Appel de procédures stockées MySQL avec des curseurs Python
Lors de l'utilisation de procédures stockées MySQL dans des applications Python, il est crucial de gérer correctement la récupération des résultats. Bien que cela puisse paraître simple, la récupération des résultats des procédures peut entraîner des erreurs inattendues.
Un défi courant consiste à rencontrer l'exception "Aucun ensemble de résultats à récupérer" lors de l'utilisation de curseur.fetchall(). Cela se produit parce que les procédures stockées renvoient souvent plusieurs ensembles de résultats et que curseur.fetchall() est conçu pour parcourir un seul ensemble.
Pour résoudre ce problème, il est nécessaire de récupérer l'ensemble de résultats spécifique qui vous intéresse. Cela peut être fait en utilisant la méthode curseur.stored_results(), qui renvoie un générateur de jeux de résultats. Chaque ensemble de résultats peut ensuite être récupéré séparément à l'aide de fetchall().
for result in cursor.stored_results(): people = result.fetchall()
Dans certains scénarios, vous pouvez également rencontrer l'erreur « Utiliser cmd_query_iter pour les instructions avec plusieurs requêtes » lors de l'utilisation de curseur.execute(). Cela se produit car le connecteur interprète par erreur l'appel de procédure comme une instruction de requêtes multiples.
Pour résoudre ce problème, il est recommandé de définir explicitement le paramètre multi=True lors de l'exécution de plusieurs requêtes. Cela garantit que le connecteur gère correctement de tels scénarios.
cursor.execute("call getperson(1)", multi=True)
En suivant ces directives, vous pouvez récupérer efficacement les résultats des procédures stockées et gérer plusieurs ensembles de résultats selon vos besoins.
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!