Вы пробовали эту версию fetchone? Или что-то другое?
row = cursor.fetchone()
while row is not None:
# process
row = cursor.fetchone()
кроме того, Вы пробовали это?
row = cursor.fetchmany(size=1)
while row is not None:
# process
row = cursor.fetchmany( size=1 )
Не все драйверы поддерживают их, таким образом, Вы, возможно, получили ошибки или нашли их, также замедляются.
<час>Редактирование.
, Когда это держится, выполняются, Вы ожидаете базы данных. Это не строка строкой вещь Python; это - вещь MySQL.
MySQL предпочитает выбирать все строки как часть управление кэшем само по себе. Это выключено путем обеспечения fetch_size Целого числа. MIN_VALUE (-2147483648L).
вопрос, какая часть DBAPI Python становится эквивалентом JDBC fetch_size?
я думаю, что это мог бы быть arraysize атрибут курсора. Попробуйте
cursor.arraysize=-2**31
И посмотрите, вынуждает ли это MySQL передать набор результатов потоком вместо того, чтобы кэшировать его.
Я не знаю сайта, который каталогизирует их напрямую, но одна стратегия, которую я иногда использовал, заключается в следующем:
Когда вы найдете часть, которая была особенно сложной, выбросьте свою работу и повторите ее пару раз раз, чтобы укрепить свои навыки.
Это не просто практика рефакторинга, но и другие навыки, такие как чтение кода, тестирование и работа с процессами сборки.
Самая сложная проблема - найти проект, который вам нужен.Я достаточно заинтересован, чтобы продолжать работать. Последней, над которой я работал, была библиотека Python для генетического программирования, а текущая, над которой я работаю, - это библиотека IRC для Java.