2012-03-05 13 views
0

私たちは、DB非依存コードをSQLステートメントに変換する目的でのみ(SQLステートメントのコンパイルと明示的な使用により)SQLALchemyを使用しています。とにかくORMを使用していないし、create_engineでエンジンを作っているわけでもありません。ORMまたは接続を使用していない場合、SQLAlchemyはスレッドを作成しますか?

私はこのように使用すると、SQLAがバックグラウンドでスレッドまたはDB接続を作成するとは限りません。これは本当ですか ?

答えて

0

SQLAlchemyはスレッドを生成せず、特定の操作が呼び出されるスレッド内のすべてを実行します。

スレッドを生成しなくても、同期指向の癖が発生する可能性のある場所は、特定のオブジェクトがPythonのGCクリーンアップスレッドによってガベージコレクションされることはまれです。例えば、Connectionオブジェクトを使って作業していて、それを閉じずにスコープから外した場合、gcスレッドによってガベージコレクトされた場合は、DBAPI connection.rollback()メソッドがGCで呼び出されてSQLAlchemyガベージコレクタがそれらを収集するときに接続をクリーンアップします。この問題の解決策として、DBAPIに問題がある場合は、ConnectionおよびSessionなどのオブジェクトを積極的にクローズするようにしてください。

関連する問題