Podczas używania sqlite3 z C/C++ dowiedziałem się, że ma on opcję trybu tylko do odczytu, co jest bardzo przydatne, aby uniknąć przypadkowego uszkodzenia danych. Czy jest coś takiego w powiązaniu z Pythonem?Otwieranie bazy danych sqlite3 z Pythona w trybie tylko do odczytu
Odpowiedz
Zgodnie z linkiem podanym przez @Chris, nie. Ale jest jeszcze inne opakowanie dla sqlite3, które jest mniej zgodne z PEP 249 i bardziej szczelnie otacza sqlite3, przyswajając nowe funkcje silnika: http://code.google.com/p/apsw/. Owijarka obsługuje otwieranie bazy danych w trybie tylko do odczytu oraz inne elementy.
Jak Pythona 3.4.0 można otworzyć bazę danych w trybie tylko do odczytu z następujących czynności:
db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)
zobaczyć również the documentation.
UWAGA: to nie działa w Pythonie, tylko w Pythonie 3 – lowtech
Obejście dla Pythona 2.x:
fd = os.open(filename, os.O_RDONLY)
c = sqlite3.connect('/dev/fd/%d' % fd)
os.close(fd)
Nie POSIX, ale dostępne w systemie Linux, OS/X i większością UNIX-ów.
Możliwy duplikat: http://stackoverflow.com/questions/4239606/sqlite3-read-only-on-a-file-system-that-doesnt-support-locking – Chris
@Chris Dzięki, zredaguję odpowiedź tylko po to, by zaoszczędzić trochę pracy przyszłym ludziom z tym samym pytaniem. – dsign
możliwy duplikat [force python, aby zrezygnować z natywnego sqlite3 i użyć (zainstalowanej) najnowszej wersji sqlite3] (http://stackoverflow.com/questions/1545479/force-python-to-forego-native-sqlite3-and-use- the-installed-latest-sqlite3-ver) –