Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ergebnisse aus gespeicherter Prozedur mit Python-Cursor können nicht zurückgegeben werden

Haben Sie versucht, eine der Ergebnismengen auszuwählen?

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

Es könnte sein, dass es für mehrere Resultsets zuweist, obwohl Sie nur ein SELECT haben stmt. Ich weiß, dass in den gespeicherten MySQLi-Prozeduren von PHP dies geschieht, um INOUT- und OUT-Variablenrückgaben zu ermöglichen (von denen Sie wiederum keine haben, aber vielleicht werden sie trotzdem zugewiesen).

Der vollständige Code, den ich verwende (der funktioniert), ist:

import mysql.connector

cnx = mysql.connector.connect(user='me',password='pw',host='localhost',database='mydb')
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()