sql >> Databasteknik >  >> RDS >> Mysql

Kan inte returnera resultat från lagrad procedur med Python-markören

Har du testat att välja en av resultatuppsättningarna?

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

Det kan vara så att den allokerar för flera resultatuppsättningar även om du bara har en SELECT stmt. Jag vet att i PHP:s MySQLi lagrade procedurer gör detta för att tillåta INOUT och OUT variabla returer (vilket du återigen inte har någon av, men kanske allokerar det ändå).

Den fullständiga koden jag använder (som fungerar) är:

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. skapa tabell med sequence.nextval i oracle

  2. CHAR() Exempel i MySQL

  3. Få LÄNGDEN av en LONG RAW

  4. Skapa en kommaseparerad lista med värden i en Oracle SQL-sats