fetchone python mysql cursor fetchall

fetchone - python cursor



Sobre mysql cursor e iterador (1)

La clase de cursor MySQLdb implementa el protocolo iterador , por lo que simplemente puede hacer esto:

cursor.execute(sql) for row in cursor: print row ...

Código relevante de MySQLdb.cursors.BaseCursor :

def __iter__(self): return iter(self.fetchone, None)

Imagina que tengo un cursor mysql y datos leídos. La cantidad de datos puede ser muy grande con la que quiero tratar una línea cada vez.

Una manera fácil y directa podría ser así:

while True: row = cursor.fetchone() if not row: break .....

pero esto no se ve bien, así que me pregunto si esta manera funciona como se imagina:

for row in iter(cursor.fetchall())

Lo que quiero saber es: si utilizo el modo iter(cursor.fetchall()) , ¿recupera primero todos los datos o solo recupera una fila a la vez?

Cualquier idea es apreciada.

Gracias