Abrufen von Ergebnissen aus einer gespeicherten Prozedur mit dem Python-Cursor
Dieser Artikel befasst sich mit dem Problem des Abrufens von Ergebnissen aus einem MySQL-Aufruf einer gespeicherten Prozedur mit Python Cursor. Trotz einer erfolgreichen Verbindung zur Datenbank und der Verwendung von „cursor.execute()“ bei einer normalen SQL-Abfrage geben Versuche, Ergebnisse aus einem Aufruf einer gespeicherten Prozedur mithilfe von „cursor.fetchall()“ oder „cursor.fetchone()“ abzurufen, einen Fehler zurück: „mysql. „connector.errors.InterfaceError: Kein Ergebnissatz zum Abrufen von.“
Lösung
Die Lösung liegt in Abrufen der Ergebnismenge mit Cursor.stored_results(). Diese Methode durchläuft alle verfügbaren Ergebnismengen und ermöglicht es dem Programmierer, mit der gewünschten Ergebnismenge zu arbeiten.
Der folgende Code demonstriert den richtigen Ansatz:
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()
Dieser Code ruft die Ergebnisse erfolgreich aus dem Speicher ab Verfahren ohne Fehler.
Überlegung
Es ist erwähnenswert dass der MySQL-Python-Connector mehrere Ergebnismengen zuordnen kann, auch wenn nicht mehrere SELECT-Anweisungen vorhanden sind. Diese Zuordnung kann aufgrund der Einbeziehung von INOUT- und OUT-Variablen in die gespeicherte Prozedur erfolgen, die Sie nicht haben. Nichtsdestotrotz handhabt die Verwendung von Cursor.stored_results() diese potenzielle Zuordnung effektiv und ermöglicht einen erfolgreichen Ergebnisabruf.
Das obige ist der detaillierte Inhalt vonWie rufe ich Ergebnisse aus einer gespeicherten MySQL-Prozedur mit Pythons „cursor.stored_results()' ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!