2017-01-04 11 views
0

私は、フォームのエラーを取得しています:私のマルチスレッドのアプリケーション内のSQLite&Sql Alchemy SingletonThreadPool - 接続オブジェクトを共有できますか?

sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 139661426296576 and this is thread id 139662493492992 

。私はこの問題を解決するためにSingletonThreadPoolを期待していた

from sqlalchemy.pool import SingletonThreadPool 
db_path = "sqlite:///" + cwd + "/data/data.db" 
create_engine(db_path, poolclass=SingletonThreadPool, pool_size=50) 

は、私は私のエンジンをインスタンス化しています。私は何が欠けていますか?

(ボーナス質問:?減少頭痛のために、私は、MySQLに移動する必要があります)

答えて

1

あなたはsqlite3のを使用している場合、あなたは同じように以下のcheck_same_threadパラメータを渡す必要があります:

create_engine(db_path, connect_args={'check_same_thread': False}) 
+0

このそのトリックをしたようだ。これにはどんな危険な副作用がありますか? (挿入された挿入物など) – cjm2671

+0

実際には、sqlite3は複数のスレッドをサポートし、並行処理を処理します。あなたがあなたのデータベースのための特定の要件を持っていない限り、sqliteはちょうどいいです – pna

関連する問題