Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível retornar resultados do procedimento armazenado usando o cursor do Python


Você já tentou escolher um dos conjuntos de resultados?
for result in cursor.stored_results():
    people = result.fetchall()

Pode ser que esteja alocando para vários conjuntos de resultados, mesmo que você tenha apenas um SELECT stm. Eu sei que os procedimentos armazenados do MySQLi do PHP fazem isso para permitir retornos de variáveis ​​INOUT e OUT (o que, novamente, você não tem nenhum, mas talvez esteja alocando de qualquer maneira).

O código completo que estou usando (que está funcionando) é:
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()