たとえば、sqlite3
モジュールを使用してSQLiteファイルに格納されている同じテーブルにデータを書き込む2つのpythonスクリプトがあるとします。 SQLiteファイルはNFSファイルシステムに格納されています。 SQLite-FAQ私は以下を読んでいます:NFSファイルシステムでのsqliteファイルのロックは可能ですか?
SQLiteは、データベースへのアクセスを制御するためにリーダ/ライターのロックを使用します。 [...]ただし、データベースファイルがNFSファイルシステムに保存されている場合、このロック機構は正しく動作しない可能性があります。 これは、多くのNFS実装で fcntl()ファイルのロックが壊れているためです。複数のプロセスが ファイルに同時にアクセスしようとすると、 はSQLiteデータベースファイルをNFSに置かないようにする必要があります。
これはまったく不可能であることを意味しますか、または、あるプロセスがもう一方のプロセスが完了するまで待つことを保証する方法はありますか?
INSERTは複雑ではありません。ちょうどいくつか:
INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)
そして挿入されたセットは互いに素です。
次の質問:2つのプロセスが同じテーブルに書き込もうとしたとき、または同じデータベース(ファイル)に書き込もうとしたときにNFS問題が発生しますか?各プロセスが同じデータベース(ファイル)内に独自のテーブルを作成してそれに書き込むことを回避する方法ですか?
この男性を聞く。 [彼は権威です。](http://code.google.com/p/apsw/) –
残念ながら私はSQLiteを使用する必要があります。私は各プロセスに独自のファイルを書いて渡してしまい、後でスクリプトをマージしました。しかし、あなたの答えをありがとう! :-) – Aufwind
最終的に破損したら、NFSを使用したことを確認してください。そして、誰もが "それをしないでください"と答えたときには、驚かないでください。 –