2016-05-18 16 views
1

複数のコンピュータが実行され、同じsqliteデータベースからすべての読み書きが必要なプログラムがあります。各プログラムはファイルに対してアクションを実行しており、sqliteテーブルに格納されているリストから利用可能なファイル名を要求します。たいていの場合、これを実行するユーザーは6〜10人になります。擬似コードは次のようになり...Python 2.7:複数のコンピュータ間でのSQliteと同時実行

con = sqlite.connection(db,timeout=60) 
filename = select file from tablename limit 1; 
update tablename set status ="busy" where file = filename; 
<..perform action. takes 2-5 minutes..> 
update tablename set status ="Finished" where file = filename; 
repeat 

したがって、各トランザクションが非常に速いですが、残念ながら私はまだ私が接続タイムアウトが本当に高く設定しても、「DBがロックされている」に問題を実行していますよ。私はapswの非同期vfsを読んだことがありますが、キューマネージャは1台のマシンにしかローカルではないようです。進める方法についてのアドバイスは?

編集:私はITの制限の下にあり、私の机の上に適切なSQLサーバーを設定することができません。

+3

これは、SQLiteを使用しないでください。 PostgreSQLなどの適切なデータベースサーバを使用してください。 –

+0

私は理解していますが、ITの制限により許可されません – njfrazie

答えて

0

(私はAPSWの著者です)非同期VFSはかなり前にSQLiteチームによって廃止され、APSWには何年も含まれていませんでした。よりよく統合された同等の機能が、write ahead loggingを使用してSQLiteコアに提供されています。 1台のマシンのローカル

... ...あなたは、ネットワーク上でのSQLiteを使用しようとしている意味

。そんなことしたらダメ。うまくいかないだろう。最初はうまくいくように見えますが、最終的には腐敗が起こります。あなたは、破損が起こらないことを証明するために、事前にテストすることはできません。 More details here

関連する問題