gpt4 book ai didi

python - 每个连接有多个事务的 MySQLdb

转载 作者:太空狗 更新时间:2023-10-29 21:18:50 25 4
gpt4 key购买 nike

在不关闭它们之间的连接的情况下,对多个事务使用单个 MySQLdb 连接是否可以?换句话说,像这样:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for i in range(10):
try:
cur = conn.cursor()
query = "DELETE FROM SomeTable WHERE ID = %d" % i
cur.execute(query)
cur.close()
conn.commit()

except Exception:
conn.rollback()

conn.close()

它似乎工作正常,但我只是想仔细检查一下。

最佳答案

我认为这里对交易的构成存在误解。

您的示例打开一个连接,然后在其上执行一个 事务。您在该事务中执行多个 SQL 语句,但在提交后将其完全关闭。当然,这不仅仅是好的。

执行多个事务(而不只是 SQL 语句),如下所示:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for j in range(10):
try:
for i in range(10):
cur = conn.cursor()
query = "DELETE FROM SomeTable WHERE ID = %d" % i
cur.execute(query)
cur.close()
conn.commit()
except Exception:
conn.rollback()

conn.close()

上述代码提交了 10 个事务,每个事务包含 10 个单独的删除语句。

是的,只要您不在线程之间共享该连接,您应该能够毫无问题地重新使用打开的连接。

例如,SQLAlchemy通过合并连接来重新使用连接,根据需要将打开的连接分发给应用程序。新事务和新语句在应用程序的整个生命周期内在这些连接上执行,无需关闭,直到应用程序关闭。

关于python - 每个连接有多个事务的 MySQLdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com