sql >> Database teknologi >  >> RDS >> Mysql

Kan ikke returnere resultater fra lagret procedure ved hjælp af Python-markøren

Har du prøvet at vælge et af resultatsættene?

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

Det kan være, at den allokerer til flere resultatsæt, selvom du kun har én SELECT stmt. Jeg ved, at i PHP's MySQLi lagrede procedurer gør dette for at give mulighed for INOUT og OUT variable returneringer (som du igen ikke har nogen af, men måske allokerer den alligevel).

Den komplette kode jeg bruger (som virker) er:

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


  1. Sådan markeres et bestemt antal rækker i tabellen ved samtidig adgang

  2. Flydende NHibernate og PostgreSQL, SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException:Den specificerede metode understøttes ikke

  3. Tillader Oracle muligheden for uforpligtende læsning?

  4. Åbn automatisk SQLite-forespørgselsresultater i Excel