Открытие базы данных sqlite3 из python в режиме только для чтения
При использовании sqlite3 из C/С++ я узнал, что у него есть опция режима open-in-read-only, что очень удобно, чтобы избежать случайного повреждения данных. Есть ли такая вещь в связывании Python?
Ответы
Ответ 1
Как по ссылке, приведенной @Chris, нет. Но есть еще одна оболочка для sqlite3, которая меньше совместима с PEP 249 и которая более тесно обтекает sqlite3, ассимилируя новые возможности движка: http://code.google.com/p/apsw/. Эта оболочка поддерживает открытие базы данных в режиме только для чтения, а также другие тонкости.
Ответ 2
Начиная с Python 3.4.0 вы можете открыть базу данных в режиме только для чтения со следующим:
db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)
Также см. документацию.
Ответ 3
Обходной путь для 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.