Sha*_*way 5 python sqlite savepoints
我正在尝试将保存点与python 2.6中内置的sqlite3模块一起使用.每次我尝试释放或回滚保存点时,我总是收到一个OperationalError: no such savepoint.我错过了什么?
python version: 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)
[GCC 4.0.1 (Apple Inc. build 5493)]
PySQLite version: 2.4.1
sqlite3 version: 3.6.11
Traceback (most recent call last):
File "spDemo.py", line 21, in <module>
conn.execute("release savepoint spTest;")
sqlite3.OperationalError: no such savepoint: spTest
Run Code Online (Sandbox Code Playgroud)
从这段代码:
import sys
import sqlite3
print 'python version:', sys.version
print 'PySQLite version:', sqlite3.version
print 'sqlite3 version:', sqlite3.sqlite_version
print
conn = sqlite3.connect('db_spDemo.db')
conn.isolation_level = "DEFERRED"
with conn:
conn.execute("create table example (A, B);")
with conn:
conn.execute("insert into example values (?, ?);", (0,200))
conn.execute("savepoint spTest;")
conn.execute("insert into example values (?, ?);", (1,201))
conn.execute("insert into example values (?, ?);", (2,202))
conn.execute("release savepoint spTest;")
conn.execute("insert into example values (?, ?);", (5,205))
Run Code Online (Sandbox Code Playgroud)
小智 3
这似乎是 sqlite3 模块在该隔离级别下的行为方式造成的。
这有效,注意两个变化:
import sys
import sqlite3
print 'python version:', sys.version
print 'PySQLite version:', sqlite3.version
print 'sqlite3 version:', sqlite3.sqlite_version
print
conn = sqlite3.connect('shane.sqlite')
conn.isolation_level = None # CHANGED
with conn:
conn.execute("create table example (A, B);")
with conn:
conn.execute("insert into example values (?, ?);", (0,200))
conn.execute("savepoint spTest;")
conn.execute("insert into example values (?, ?);", (1,201))
conn.execute("insert into example values (?, ?);", (2,202))
conn.execute("rollback to savepoint spTest;") # CHANGED
conn.execute("insert into example values (?, ?);", (5,205))
Run Code Online (Sandbox Code Playgroud)
输出:
$ python shane-sqlite3.py && sqlite3 shane.sqlite '从示例中选择 *;' python 版本:2.6.2(release26-maint,2009 年 4 月 19 日,01:56:41) [海湾合作委员会4.3.3] PySQLite 版本:2.4.1 sqlite3版本:3.6.10 0|200 5|205
这是一个令人不满意的答案,我没有在 sqlite3 模块文档中看到任何相关内容(我也没有尝试查看源代码)。但我希望它能帮助你找到正确的方向。
| 归档时间: |
|
| 查看次数: |
2866 次 |
| 最近记录: |