Python MySQLdb 不释放表锁
我有一个程序,它会读取一个文件并把数据插入到数据库里。我正在用Python为这个程序写一个测试工具。这个Python工具会先连接到数据库,获取一些配置参数,然后再生成测试数据。接着,它会等10秒钟,让正在测试的程序有时间处理文件并修改数据库。可是,等到10秒后,如果我尝试从数据库中读取值,却发现这些值并不存在。如果我打开第二个终端,通过命令行检查,结果也是一样的。奇怪的是,当我结束我的Python测试工具时,数据才会被插入到数据库中。看起来是MySQLdb在锁住表,不让我插入数据。我该怎么让MySQLdb释放对表的锁呢?
总结一下,我的工作流程是这样的:
connection = MySQLdb.connect(host="localhost")
cursor = connection.cursor()
cursor.execute(".....")
cursor.close()
connection.commit()
connection.close()
cursor = None
connection = None
sleep(10)
重复以上步骤,检查我的其他程序应该插入的数据。
1 个回答
4
在你执行 cursor.close()
之前,必须先执行 connection.commit()
。
需要注意的是,MySQL 实际上并不支持游标——Python 的封装工具是模拟游标的。这可能会导致你的代码在一些意想不到的情况下无法正常工作,就像这个例子一样。