Avviso: Questo è per il modulo MySQLdb in Python.
Per una dichiarazione SELECT
, non dovrebbe esserci un'eccezione per un recordset vuoto. Basta una lista vuota ([]
) per cursor.fetchall()
e None
per cursor.fetchone()
.
Per qualsiasi altra dichiarazione, per esempio INSERT
o UPDATE
, che non restituisce un recordset, non è possibile né chiamare fetchall()
né fetchone()
sul cursore. Altrimenti, verrà sollevata un'eccezione.
C'è un modo per distinguere tra questi due tipi di cursori:
def yield_data(cursor):
while True:
if cursor.description is None:
# No recordset for INSERT, UPDATE, CREATE, etc
pass
else:
# Recordset for SELECT, yield data
yield cursor.fetchall()
# Or yield column names with
# yield [col[0] for col in cursor.description]
# Go to the next recordset
if not cursor.nextset():
# End of recordsets
return
Che database è questo? Non mi aspetterei un'eccezione qui, piuttosto '.fetchall()' restituisce una lista vuota. –