Быстрее Python MySQL - PullRequest
       2

Быстрее Python MySQL

6 голосов
/ 17 января 2012

Я использую mysql.connector (реализация MySQLdb Python?) Для доступа к MySQL. Передача из оператора выбора из курсора не такая быстрая.

Есть ли способ ускорить код?

Может быть, другая библиотека? Который? (У меня есть Windows и Python 3.1) Может быть, поиск строки отличается от перебора курсора?

1 Ответ

11 голосов
/ 17 января 2012

Курсор 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 в том, что он лениво выбирает строки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...