Python MySQLdb 不会释放表锁

问题描述 投票:0回答:1

我有一个程序可以读取文件并将数据插入数据库。我正在用 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)

重复上面的操作来检查我的其他程序应该插入的数据

python mysql
1个回答
4
投票

您需要在

connection.commit()
之前执行
cursor.close()

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

© www.soinside.com 2019 - 2024. All rights reserved.