Я использую python 2.7, pyodbc и mysql 5.5. я на окнах
У меня есть запрос, который возвращает миллионы строк, и я хотел бы обрабатывать его по частям. с помощью функции fetchmany.
Он часть кода
import pyodbc
connection = pyodbc.connect('Driver={MySQL ODBC 5.1 Driver};Server=127.0.0.1;Port=3306;Database=XXXX;User=root; Password='';Option=3;')
cursor_1 = connection.cursor()
strSQLStatement = 'SELECT x1, x2 from X'
cursor_1.execute(strSQLStatement)
# the error occurs here
x1 = cursor_1.fetchmany(10)
print x1
connection.close()
Моя проблема:
Я получаю сообщение об ошибке У клиента MySQL недостаточно памяти
Я предполагаю, что это потому, что
cursor_1.execute
пытается прочитать все в память и пробовал следующее (по одному), но безрезультатно- In user interface (ODBC – admin tools) I ticked the “Don't cache results of forwarding-only cursors”
- connection.query("SET GLOBAL query_cache_size = 40000")
Мой вопрос:
Есть ли у pyodbc возможность запускать запрос и предоставлять результаты только по запросу?
В руководстве по MySQL предлагается вызывать mysql с параметром - -быстрый вариант. Можно ли это сделать также, когда не используется командная строка?
Спасибо за вашу помощь.
P.S: предложения по альтернативному модулю MySQL также приветствуются, но я использую портативный Python, поэтому мой выбор ограничен.
LIMIT 10
в самом запросе? - person Burhan Khalid   schedule 23.08.2012