Il MySQLdb
predefinito cursore recupera l'intero risultato della query in una volta dal server. La conversione di questi dati in un elenco Python di tuple può consumare molta memoria e tempo.
Usa MySQLdb.cursors.SSCursor
quando vuoi fare una query enorme ed estrarre i risultati dal server uno alla volta. Si noti, tuttavia, che quando si utilizza SSCursor, nessun altro è possibile effettuare una query
sulla connection
fino a quando l'intero set di risultati non è stato recuperato.
import MySQLdb
import MySQLdb.cursors as cursors
connection = MySQLdb.connect(
...
cursorclass = cursors.SSCursor)
cursor = connection.cursor()
cursor.execute(query)
for row in cursor:
...
Oppure, usa oursql , un driver Python alternativo per MySQL. Una delle caratteristiche di oursql è che recupera le righe pigramente .