La forma canónica es usar el iterador de cursor integrado.
curs.execute('select * from people')
for row in curs:
print row
Puedes usar fetchall()
para obtener todas las filas a la vez.
for row in curs.fetchall():
print row
Puede ser conveniente usar esto para crear una lista de Python que contenga los valores devueltos:
curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]
Esto puede ser útil para conjuntos de resultados más pequeños, pero puede tener efectos secundarios negativos si el conjunto de resultados es grande.
-
Debe esperar a que se devuelva el conjunto de resultados completo a su proceso de cliente.
-
Es posible que consuma mucha memoria en su cliente para mantener la lista construida.
-
Python puede tardar un tiempo en construir y deconstruir la lista que, de todos modos, descartará de inmediato.
Si sabe que se devuelve una sola fila en el conjunto de resultados, puede llamar a fetchone()
para obtener la fila única.
curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]
Finalmente, puede recorrer el conjunto de resultados obteniendo una fila a la vez. En general, no hay una ventaja particular en hacer esto sobre el uso del iterador.
row = curs.fetchone()
while row:
print row
row = curs.fetchone()