Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

zkfarmer 发表于 2008-10-26 10:40

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]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.