对多个事务使用一个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()
看起来没问题,但我只是想再检查一下。
最好先构建一个查询字符串,然后执行这个MySQL语句。例如:
我认为这里有一个关于什么是交易的误解。
您的示例打开一个连接,然后对其执行一个事务。在该事务中执行多个SQL语句,但在提交后完全关闭它。那当然不止是好的。
执行多个事务(而不仅仅是SQL语句),如下所示:
上述代码提交10个事务,每个事务由10个单独的delete语句组成。
是的,只要不在线程之间共享该连接,就应该能够毫无问题地重用开放连接。
例如,SQLAlchemy通过池化连接来重用连接,并根据需要将打开的连接分发给应用程序。在应用程序的整个生命周期中,在这些连接上执行新事务和新语句,而无需在应用程序关闭之前关闭。
相关问题 更多 >
编程相关推荐