如何使用Python设置SQLite隔离级别

2024-09-29 21:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道(或者至少,我认为我知道),在处理事务时,标准中有四个隔离级别:

READ UNCOMMITTED - will allow everything
READ COMMITTED - will not allow dirty reads 
REPEATABLE READ - will not allow dirty, non-repearable reads   
SERIALIZABLE - will not allow dirty, non-repearable, phantom reads

我知道,例如,在处理MySQL时,我可以做如下操作:

^{pr2}$

或者,如果我在处理Postgre,我可以做一些类似的事情:

db.set_isolation_level(3) # corresponds to SERIALIZABLE

所以,我想知道,在处理SQLite时,我是否可以做类似的事情。我只看到:

db.isolation_level = None

但我不确定这意味着什么,以及如何设置其他隔离级别(如果它们存在于SQLite的上下文中)。谢谢!在


Tags: readdbsqlitenot级别事情levelwill
2条回答

进一步阐述马丁的答案。。。在

SQLite中的所有事务都是SERIALIZABLE,因为SQLite通过数据库范围的读写锁控制并发性,因此一次只能有一个编写器。在

例外情况是,如果您在同一进程中的两个或多个连接之间设置了shared cache mode,并启用了the ^{} pragma,在这种情况下,这些连接可以在READ UNCOMMITED模式下运行(但共享缓存之外的连接将一如既往地阻止它们)。在

sqlite中有PRAGMA statements。看来你能做到:

db.execute("PRAGMA read_uncommitted = true;");

相关问题 更多 >

    热门问题