gpt4 book ai didi

pymysql - 每个 cursor.execute() 之后都需要 connection.commit() 吗?

转载 作者:行者123 更新时间:2023-12-03 19:48:48 25 4
gpt4 key购买 nike

在执行 cursor.execute(…) 之前多次执行 connection.commit() 是否是有效的 PyMySQL 操作,或者 connection.commit() 是否需要在每个执行语句之后发生才能正确存储结果?这个想法是尽可能多地消除冗余语句,因为这个过程是长期运行的。

代码结构:

with connection.cursor() as cursor:

cursor.execute(SQLtype1, rowToInsert)

cursor.execute(SQLtype2, otherToInsert)

connection.commit() # does this account for both execute statements, or just the last?

我审查了以下内容:

PyMySQL execute/commit example ,但只有一个示例只有一个执行语句。

Python MySQLdb example ,但有一个示例显示每个执行语句后的提交

Python SQLite example ,在提交前显示多个执行语句,但不确定 SQLite 的处理方式是否不同

注意: 由于 SQL 查询不同, executemany 似乎不是一个选项。

最佳答案

不,这是 cursor.commit() 的预期目的。您所描述的是自动提交,可能会或可能不会为您的数据库驱动程序启用。检查其文档以确保。

如果您的第一个查询成功但第二个查询失败,您可能不希望您的数据库处于损坏状态,其中某些行已插入但其他行未插入。您执行的所有更改都将暂存,直到您使用 cursor.commit() 将它们提交到数据库。这允许您一次执行多个查询,并在其中一个失败时自动回滚更改。

关于pymysql - 每个 cursor.execute() 之后都需要 connection.commit() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429568/

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