cursor.execute(…)在执行之前多次执行有效的 PyMySQL 操作connection.commit(),还是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?
Run Code Online (Sandbox Code Playgroud)
我已经审查了以下内容:
PyMySQL 执行/提交示例,但只有一个示例只有一个执行语句。
Python MySQLdb 示例,但有一个示例显示每个执行语句后的提交
Python SQLite 示例,显示提交前的多个执行语句,但不确定 SQLite 是否以不同方式处理
注意:由于 SQL 查询不同,executemany似乎不是一个选项。
不,这是 的预期目的cursor.commit()。您所描述的是自动提交,可能会或可能不会为您的数据库驱动程序启用。检查其文档以确保。
如果您的第一个查询成功但第二个查询失败,您可能不希望您的数据库处于损坏状态,其中某些行已插入但其他行未插入。您执行的所有更改都将暂存,直到您使用cursor.commit(). 这允许您一次执行多个查询,并在其中一个失败时自动回滚更改。
| 归档时间: |
|
| 查看次数: |
12474 次 |
| 最近记录: |