A maneira canônica é usar o iterador de cursor integrado.
curs.execute('select * from people')
for row in curs:
print row
Você pode usar
fetchall()
para obter todas as linhas de uma vez. for row in curs.fetchall():
print row
Pode ser conveniente usar isso para criar uma lista Python contendo os valores retornados:
curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]
Isso pode ser útil para conjuntos de resultados menores, mas pode ter efeitos colaterais ruins se o conjunto de resultados for grande.
-
Você tem que esperar que todo o conjunto de resultados seja retornado ao seu processo cliente.
-
Você pode consumir muita memória em seu cliente para manter a lista construída.
-
Pode demorar um pouco para o Python construir e desconstruir a lista que você descartará imediatamente de qualquer maneira.
Se você sabe que há uma única linha sendo retornada no conjunto de resultados, você pode chamar
fetchone()
para obter a linha única. curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
Finalmente, você pode fazer um loop sobre o conjunto de resultados buscando uma linha de cada vez. Em geral, não há vantagem particular em fazer isso sobre o uso do iterador.
row = curs.fetchone()
while row:
print row
row = curs.fetchone()