「スレッド」モジュールを使用するPythonプログラムがあります。私のプログラムは毎秒1回、Webからデータをフェッチする新しいスレッドを開始し、このデータをハードドライブに保存します。sqlite3を使用してこれらの結果を保存したいのですが、機能させることができません。問題は次の行に関するもののようです。
conn = sqlite3.connect("mydatabase.db")
- このコード行を各スレッド内に配置すると、データベースファイルがロックされていることを示すOperationalErrorが発生します。これは、別のスレッドがsqlite3接続を介してmydatabase.dbを開いており、それをロックしていることを意味していると思います。
- このコード行をメインプログラムに配置し、接続オブジェクト(conn)を各スレッドに渡すと、ProgrammingErrorが発生し、スレッドで作成されたSQLiteオブジェクトは同じスレッドでのみ使用できるというメッセージが表示されます。
以前は、すべての結果をCSVファイルに保存していましたが、これらのファイルロックの問題はありませんでした。うまくいけば、これはsqliteで可能になります。何か案は?