Maison >base de données >tutoriel mysql >Comment récupérer les résultats d'une procédure stockée MySQL à l'aide de « cursor.stored_results() » de Python ?

Comment récupérer les résultats d'une procédure stockée MySQL à l'aide de « cursor.stored_results() » de Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-01 12:38:15281parcourir

How to Retrieve Results from a MySQL Stored Procedure using Python's `cursor.stored_results()`?

Récupération des résultats d'une procédure stockée à l'aide d'un curseur Python

Cet article aborde le problème de la récupération des résultats d'un appel de procédure stockée MySQL à l'aide d'un Python curseur. Malgré une connexion réussie à la base de données et l'utilisation de curseur.execute() sur une requête SQL normale, les tentatives de récupération des résultats d'un appel de procédure stockée à l'aide de curseur.fetchall() ou curseur.fetchone() renvoient une erreur : "mysql. Connector.errors.InterfaceError : Aucun résultat à récupérer."

Solution

La solution réside dans la récupération l'ensemble de résultats à l'aide de curseur.stored_results(). Cette méthode parcourt tous les ensembles de résultats disponibles, permettant au programmeur de travailler avec l'ensemble de résultats souhaité.

Le code suivant démontre l'approche correcte :

import mysql.connector

cnx = mysql.connector.connect(user='root', host='127.0.0.1', database='mytestdb')
cnx._open_connection()
cursor = cnx.cursor()

cursor.callproc("getperson", [1])

for result in cursor.stored_results():
    people = result.fetchall()

for person in people:
    print(person)

cnx.close()

Ce code récupère avec succès les résultats du fichier stocké. procédure sans rencontrer d'erreurs.

Considération

Il convient de noter que le connecteur MySQL Python peut allouer plusieurs jeux de résultats même en l'absence de plusieurs instructions SELECT. Cette allocation peut se produire en raison de l'inclusion de variables INOUT et OUT dans la procédure stockée, que vous n'avez pas. Néanmoins, l'utilisation de curseur.stored_results() gère efficacement cette allocation potentielle et permet une récupération réussie des résultats.

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