在使用C / C ++的sqlite3时,我了解到它有一个open-in-read-only模式选项,这对于避免意外的数据损坏非常方便。 Python绑定中有这样的东西吗?
答案 0 :(得分:35)
从Python 3.4.0开始,您可以使用以下方式以只读模式打开数据库:
db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)
答案 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/。该包装器确实支持以只读模式打开数据库,以及其他细节。