我有一个程序可以读取文件并将数据插入数据库。我正在用 python 为该程序编写一个测试工具。 pythonharness在生成测试数据之前连接到数据库以获取一些配置参数。然后等待 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)
重复上面的操作来检查我的其他程序应该插入的数据
您需要在
connection.commit()
之前执行cursor.close()
。
请注意,MySQL 实际上并不支持游标——Python 包装器会模拟它们。这可能会导致您的代码无法以意想不到的方式工作,如本例所示。