В модуле _mysql
используйте следующий вызов:
conn.use_result()
Это говорит соединению, что вы хотите извлекать строки одну за другой, оставляя остаток на сервере (но оставляя курсор открытым).
Альтернатива (и значение по умолчанию):
conn.store_result()
Это говорит соединению о необходимости извлечь весь набор результатов после выполнения запроса, а последующие выборки будут просто перебирать набор результатов, который теперь находится в памяти в вашем приложении Python. Если ваш набор результатов очень большой, вам следует рассмотреть возможность использования LIMIT
, чтобы ограничить его тем, с чем вы можете справиться.
Обратите внимание, что MySQL не разрешает запуск другого запроса, пока вы не получите все строки из той, которую вы оставили открытой.
В модуле MySQLdb эквивалентно использование одного из этих двух различных объектов курсора из MySQLdb.cusrors
:
- CursorUseResultMixIn
- CursorStoreResultMixIn