Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible de renvoyer les résultats d'une procédure stockée à l'aide du curseur Python

Avez-vous essayé de choisir l'un des jeux de résultats ?

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

Il se peut qu'il alloue plusieurs jeux de résultats même si vous n'avez qu'un seul SELECT stmt. Je sais que dans les procédures stockées MySQLi de PHP, cela permet d'autoriser les retours de variables INOUT et OUT (qui encore une fois, vous n'en avez pas, mais peut-être qu'il alloue de toute façon).

Le code complet que j'utilise (qui fonctionne) est :

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()