嘿伙计们,我有以下问题: 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)
问题:当获得 900 万个结果时,“large = cursor.execute(SELECT * FROM VERYLARGETABLE)”永远不会完成......我在 30 秒后 mysql 服务器完成查询的 4 列中找到了 200 万个条目的边界,但是python进程持续运行数小时......这可能是Python MySQLDB库中的一个错误......
SO 第二次尝试:带有 db.use_results() 和 fetch_row() 的 db.query 函数:
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")
所以第三次尝试使用 2 个 MySQL 连接......这不起作用,当我打开第二个连接时,第一个连接消失......
有什么建议么??