Курсор MySQLdb
по умолчанию извлекает весь результат запроса сразу с сервера.Преобразование этих данных в список кортежей Python может занять много памяти и времени.
Использовать MySQLdb.cursors.SSCursor , если вы хотите сделать огромный запрос и получить результаты изсервер по одному.Тем не менее, обратите внимание, что при использовании SSCursor, нельзя выполнять другие запросы на connection
до тех пор, пока не будет получен весь набор результатов.
import MySQLdb
import MySQLdb.cursors as cursors
connection = MySQLdb.connect(
...
cursorclass = cursors.SSCursor)
cursor = connection.cursor()
cursor.execute(query)
for row in cursor:
...
Или используйте oursql , альтернативный драйвер Python для MySQL.Одна из особенностей oursql в том, что он лениво выбирает строки .