【发布时间】:2011-05-17 18:20:02
【问题描述】:
大家好, 我有以下问题: 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)”永远不会完成......我在 4 列的 200 万个条目处发现了一个边界,其中 mysql 服务器在 30 之后完成了查询秒,但 python 进程持续运行数小时......这可能是 Python MySQLDB 库中的一个错误..
第二次尝试:带有 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 连接...这不起作用,当我打开第二个连接时,第一个连接消失...
有什么建议吗??
【问题讨论】:
标签: python connection mysql-python