以只读模式从python打开sqlite3数据库

时间:2012-04-18 08:36:51

标签: python sqlite

在使用C / C ++的sqlite3时,我了解到它有一个open-in-read-only模式选项,这对于避免意外的数据损坏非常方便。 Python绑定中有这样的东西吗?

4 个答案:

答案 0 :(得分:35)

从Python 3.4.0开始,您可以使用以下方式以只读模式打开数据库:

db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)

另见the documentation

答案 1 :(得分:10)

Python 2.x的解决方法:

fd = os.open(filename, os.O_RDONLY)
c = sqlite3.connect('/dev/fd/%d' % fd)
os.close(fd)

不是posix,但可以在Linux,OS / X和大多数现代unix上使用。

答案 2 :(得分:5)

有点相关,请注意您可以使用pragma动态启用/禁用修改:

pragma query_only = ON;   -- disable changes
pragma query_only = OFF;  -- enable changes

答案 3 :(得分:3)

正如@Chris给出的链接,没有。但是还有另一个sqlite3的包装器,它更少符合PEP 249并且更紧密地包装了sqlite3,同化了引擎的新功能:http://code.google.com/p/apsw/。该包装器确实支持以只读模式打开数据库,以及其他细节。