13.13.5 控制处理
缺省,在一个数据修改语言(DML)语句(如。INSERT/UPDATE/DELETE/REPLACE)和隐含地提交处理(在一个非DML,非查询语句之前)之前,sqlite3模块隐含地打开处理。所以如果你是在处理和发出一个像CREATE TABLE…,VACUUM,PRAGMA的命令的范围内,sqlite3模块将在执行命令之前隐含地提交。这样做有两个原因。第一是这些命令中的一些在处理范围内不工作。其他的原因是pysqlite需要保持处理状态的跟踪(处理是否活跃或不活跃)。
你可以控制pysqlite通过isolation_level参数隐含地执行(根本不)哪种”BEGIN”语句给连接调用,或通过连接的isolation_level属性。
如果你想要自动提交模式,那么设置isolation_level为None。
否者抛弃它使用默认,将导致用简单的”BEGIN”语句,或设置它为SQLite支持的isolation等级中的一个:DEFERRED(延迟的),IMMEDIATE(立即的)或EXCLUSIVE(独占的)。
作为sqlite3模块需要保持处理的状态的跟踪,你不应该在你的SQL中使用OR ROLLBACK或ON CONFLICT ROLLBACK。相反应亲自捕获IntegrityError和调用连接的返回方法。
出处[url=http://www.okpython.com]PYTHON中国[/url],关于翻译的任何事情请[email=zkfarmer@gmail.com]EMAIL[/email]给我,更多文档在[url=http://www.zkfarmer.org][color=Red]我的站点[/color][/url],[color=SeaGreen]请参阅官方英文文档[/color]。
页:
[1]