Python MySQLdb不会释放表锁

时间:2011-02-08 20:20:44

标签: python mysql

我有一个程序可以读取文件并将数据插入数据库。我正在python中为该程序编写测试工具。在生成测试数据之前,python线束连接到数据库以获取一些配置参数。然后等待10秒钟以允许正在测试的程序处理文件并修改数据库。延迟后,如果我尝试从数据库中读取值,则它们不存在。如果我打开第二个终端并通过命令行检查它们不在那里。一旦我终止我的Python测试工具,数据就会插入到数据库中。似乎MySQLdb锁定表不允许我插入数据。如何让MySQLdb释放对表的锁定

TL;博士 我的工作流程看起来像这样

connection = MySQLdb.connect(host="localhost")
cursor = connection.cursor() 
cursor.execute(".....")
cursor.close()
connection.commit()
connection.close()
cursor = None 
connection = None 

sleep(10)

connection = MySQLdb.connect(host="localhost") cursor = connection.cursor() cursor.execute(".....") cursor.close() connection.commit() connection.close() cursor = None connection = None sleep(10) 重复以上内容以检查我的其他程序应该插入的数据

1 个答案:

答案 0 :(得分:3)

您需要在connection.commit()之前cursor.close()

请注意,MySQL实际上并不支持游标 - Python包装器会模仿它们。这可能导致您的代码无法以意想不到的方式工作,例如此示例。