42

C / C ++からsqlite3を使用しているときに、読み取り専用モードのオプションがあることを学びました。これは、偶発的なデータ破損を回避するのに非常に便利です。Pythonバインディングにそのようなものはありますか?

4

4 に答える 4

63

Python 3.4.0以降、次の方法でデータベースを読み取り専用モードで開くことができます。

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

ドキュメントも参照してください。

于 2014-02-15T07:33:59.573 に答える
17

Python 2.xの回避策:

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

posixではありませんが、Linux、OS / X、および最新のUNIXで使用できます。

于 2015-02-03T15:36:56.537 に答える
9

やや関連性がありますが、プラグマを使用して動的に変更を有効/無効にできることに注意してください。

pragma query_only = ON;   -- disable changes
pragma query_only = OFF;  -- enable changes
于 2018-04-03T12:59:01.950 に答える
4

@Chrisによって与えられたリンクのように、いいえ。しかし、sqlite3には別のラッパーがあります。これは、PEP 249に準拠しておらず、sqlite3をより厳密にラップし、エンジンの新機能を取り入れています:http ://code.google.com/p/apsw/ 。そのラッパーは、読み取り専用モードでのデータベースのオープンに加えて、その他の機能をサポートしています。

于 2012-04-18T09:06:01.917 に答える