在使用 C/C++ 调用 sqlite3 时,我了解到它有一个只读打开模式选项,非常方便避免数据意外损坏。Python 的绑定库中是否也有类似的选项?
从Python 3.4.0开始,您可以使用以下方式以只读模式打开数据库:
db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)
另请参见文档。
/
符号,例如:file:folder/db.sqlite3?mode=ro
。 - philshemPython 2.x 的解决方案:
fd = os.open(filename, os.O_RDONLY)
c = sqlite3.connect('/dev/fd/%d' % fd)
os.close(fd)
不是POSIX标准,但在Linux、OS/X和大多数现代Unix系统上可用。
有点相关的是,注意你可以使用 pragma 动态地启用/禁用修改:
pragma query_only = ON; -- disable changes
pragma query_only = OFF; -- enable changes
根据@Chris提供的链接,不支持。但是还有另一个对sqlite3进行了包装的库,它不太符合PEP 249标准,但更紧密地封装了sqlite3,并吸收了引擎的新功能:https://github.com/rogerbinns/apsw。该库支持以只读模式打开数据库,还有其他便利功能。