【问题标题】:Python sqlite transactionsPython sqlite 事务
【发布时间】:2014-09-06 04:42:05
【问题描述】:

如何在 python 中使用 sqlite 事务?

以下代码在cur.execute('COMMIT') 行引发异常OperationalError: cannot commit - no transaction is active

import sqlite3
con = sqlite3.connect(':memory:')
cur = con.cursor()
cur.execute('CREATE TABLE test(p)')
cur.execute('BEGIN')
cur.execute('INSERT INTO test(p) values (?)', (1,))
cur.execute('COMMIT')

我玩过isolation_level,但没有一个值能消除异常。

【问题讨论】:

标签: python sqlite


【解决方案1】:

尝试开启自动提交模式:

con.isolation_level = None

参考资料:

【讨论】:

  • 尝试了所有其他值忘记尝试None :(
  • 自动提交模式不是意味着每个execute都包装在一个事务中吗?
  • 没有。这意味着每次执行都包含在一个事务中,除非有一个事务未决。 "自动提交模式被 BEGIN 语句禁用。自动提交模式被 COMMIT 或 ROLLBACK 重新启用。" -- sqlite.org/c3ref/get_autocommit.html
猜你喜欢
  • 2014-11-21
  • 2012-06-24
  • 2015-06-14
  • 2017-01-17
  • 2011-06-19
  • 2016-02-12
  • 2013-10-16
  • 1970-01-01
相关资源
最近更新 更多