Эй, ребята,
у меня следующая проблема:
1 процесс выполняет очень большой запрос и записывает результаты в файл, между которыми процесс должен обновить состояние базы данных.
первая мысль: никаких проблем, псевдокод:
db = mysqldb.connect()
cursor = db.cursor()
large = cursor.execute(SELECT * FROM VERYLARGETABLE)
for result in large.fetchall():
file.write(result)
if timetoUpdateStatus: cursor.execute(UPDATE STATUS)
проблема: при получении 9 миллионов результатов "large = cursor.execute (SELECT * FROM VERYLARGETABLE)" никогда не завершается ... я выяснил границу в 2 миллиона записей в 4 столбцах, где сервер mysql завершил запрос после 30 секунд, но процесс python продолжает работать часами ... возможно, это ошибка в библиотеке Python MySQLDB ..
ТАК ВТОРАЯ ПОПЫТКА: функция db.query с db.use_results () и fetch_row ():
db = mysqldb.connect()
cursor = db.cursor()
db.query(SELECT * FROM VERYLARGETABLE)
large = large.use_result()
while true:
for row in large.fetch_row(100000):
file.write(row)
if timetoUpdateStatus: cursor.execute(UPDATE STATUS) <-- ERROR (2014, "Commands out of sync; you can't run this command now")
так что THIRD TRY использовал 2 MySQL-соединения ... что не работает, когда я открываю второе соединение, первое исчезает ....
есть предложения ??