Kanonicznym sposobem jest użycie wbudowanego iteratora kursora.
curs.execute('select * from people')
for row in curs:
print row
Możesz użyć fetchall()
aby uzyskać wszystkie wiersze naraz.
for row in curs.fetchall():
print row
Wygodne może być użycie tego do utworzenia listy Pythona zawierającej zwrócone wartości:
curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]
Może to być przydatne w przypadku mniejszych zestawów wyników, ale może mieć złe skutki uboczne, jeśli zestaw wyników jest duży.
-
Musisz poczekać, aż cały zestaw wyników zostanie zwrócony do procesu klienta.
-
Możesz zajmować dużo pamięci w kliencie, aby przechowywać skompilowaną listę.
-
Python może trochę potrwać, zanim zbuduje i zdekonstruuje listę, którą i tak zamierzasz natychmiast odrzucić.
Jeśli wiesz, że w zestawie wyników zwracany jest pojedynczy wiersz, możesz wywołać fetchone()
aby uzyskać pojedynczy rząd.
curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
Na koniec możesz zapętlić zestaw wyników, pobierając jeden wiersz na raz. Ogólnie rzecz biorąc, nie ma to szczególnej przewagi nad używaniem iteratora.
row = curs.fetchone()
while row:
print row
row = curs.fetchone()