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

mbjcgjjk  于 2023-01-31  发布在  SQLite
关注(0)|答案(4)|浏览(316)

在使用C/C++中的sqlite3时,我了解到它有一个以只读模式打开的选项,这对于避免意外的数据损坏非常方便。Python绑定中有这样的选项吗?

yzxexxkh

yzxexxkh1#

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

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

另请参见文档。

nlejzf6q

nlejzf6q2#

Python 2.x的解决方法:

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

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

new9mtju

new9mtju3#

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

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

pxq42qpu4#

正如@Chris给出的链接所示,没有。但是sqlite3有另一个 Package 器,它不太符合PEP 249,并且更紧密地 Package 了sqlite3,吸收了引擎的新特性:https://github.com/rogerbinns/apsw。该 Package 器确实支持以只读模式打开数据库,还有其他一些细节。

相关问题