【问题标题】:Python SQLite: Is Commit() needed for SELECT Queries?Python SQLite:SELECT 查询是否需要 Commit()?
【发布时间】:2015-11-16 10:29:26
【问题描述】:

我养成了一个习惯,当我执行cur.execute() 函数时,我会立即执行sql.commit() 函数。

如果我不修改数据库(即只执行SELECT 查询),是否需要sql.commit()

这是一个例子:

sql = sqlite3.connect('DB.db')
cur = sql.cursor()
cur.execute('SELECT * FROM table')
sql.commit()

【问题讨论】:

标签: python sqlite


【解决方案1】:

Python 不会为 select 语句开始事务。

来自 sqlite3 模块文档的 Transaction control 部分:

默认情况下,sqlite3 模块在数据修改语言 (DML) 语句(即 INSERT/UPDATE/DELETE/REPLACE)之前隐式打开事务,并在非 DML、非查询语句(即任何其他语句)之前隐式提交事务比 SELECT 或上述)。

【讨论】:

  • (因为英语不是我的母语,我对这个文档的后半部分感到困惑)and commits transactions implicitly before a non-DML, non-query statement 意味着 sqlite3 将隐式地为非 DML(插入/删除/更新)进行提交/create) 和非查询(除了选择)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2014-02-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
相关资源
最近更新 更多