Вопрос по python – Открытие базы данных sqlite3 из python в режиме только для чтения

23

При использовании sqlite3 из C / C ++ я узнал, что у него есть опция режима open-in-read-only, которая очень удобна, чтобы избежать случайного повреждения данных. Есть ли такая вещь в привязке Python?

возможный дубликатforce python to forego native sqlite3 and use the (installed) latest sqlite3 version Jakob Bowyer
Возможный дубликат:stackoverflow.com/questions/4239606/… Chris
@Chris Спасибо, я отредактирую ответ, чтобы сохранить работу для будущих людей с таким же вопросом. dsign

Ваш Ответ

4   ответа
3

предоставленной @Chris, нет. Но есть и другая оболочка для sqlite3, которая менее совместима с PEP 249 и более плотно оборачивает sqlite3, усваивая новые функции движка:http://code.google.com/p/apsw/ , Эта оболочка поддерживает открытие базы данных в режиме только для чтения, а также другие тонкости.

4

что некоторые изменения можно динамически включать / отключать с помощью прагмы:

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

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

Не posix, но доступно в Linux, OS / X и большинстве современных unixes.

34

вы можете открыть базу данных в режиме только для чтения со следующим:

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

Также смдокументация.

ПРИМЕЧАНИЕ: это не работает на Python, только на Python 3

Похожие вопросы