Zawiadomienie: To dla modułu MySQLdb w Pythonie.
Dla instrukcji SELECT
nie powinno być wyjątku dla pustego zestawu rekordów. Po prostu pusta lista ([]
) dla cursor.fetchall()
i None
dla cursor.fetchone()
.
Dla każdej innej wypowiedzi, np. INSERT
lub UPDATE
, który nie zwraca zestawu rekordów, nie można wywoływać na kursorze wartości fetchall()
ani fetchone()
. W przeciwnym razie zostanie zgłoszony wyjątek.
Jest tylko jeden sposób, aby odróżnić dwóch powyższych typów kursorów:
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
Jaka jest baza danych? Nie spodziewałbym się tu wyjątku, a '.fetchall()' zwraca pustą listę. –