Det kanoniska sättet är att använda den inbyggda marköriteratorn.
curs.execute('select * from people')
for row in curs:
print row
Du kan använda fetchall()
för att få alla rader på en gång.
for row in curs.fetchall():
print row
Det kan vara bekvämt att använda detta för att skapa en Python-lista som innehåller värdena som returneras:
curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]
Detta kan vara användbart för mindre resultatuppsättningar, men kan ha dåliga biverkningar om resultatuppsättningen är stor.
-
Du måste vänta på att hela resultatuppsättningen ska returneras till din klientprocess.
-
Du kan äta upp mycket minne i din klient för att hålla den uppbyggda listan.
-
Det kan ta ett tag för Python att konstruera och dekonstruera listan som du ändå omedelbart kommer att kassera.
Om du vet att det finns en enda rad som returneras i resultatuppsättningen kan du anropa fetchone()
för att få den enda raden.
curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
Slutligen kan du gå över resultatuppsättningen och hämta en rad i taget. I allmänhet finns det ingen speciell fördel med att göra detta framför att använda iteratorn.
row = curs.fetchone()
while row:
print row
row = curs.fetchone()