私たちは20以上のモジュールを持つPythonアプリケーションを持っていますが、そのほとんどはいくつかのWebアプリケーションとコンソールアプリケーションで共有されています。複数モジュールのPythonアプリケーションでデータベース接続を確立し管理する方法を教えてください。
私は、マルチモジュールのPythonアプリケーションでデータベース接続を確立し管理するためのベストプラクティスをはっきりと理解していません。次の例を考えてみましょう。
私はユーザーのオブジェクトクラスを定義するモジュールを持っています。これは、データベース内のユーザーを作成/削除/更新するための多くのdefsを持っています。 users.pyモジュールは、a)コンソールベースのユーティリティ、2)web.pyベースのWebアプリケーション、3)常時実行されるデーモンプロセスにインポートされます。
これらの3つのアプリケーションは、それぞれ異なるライフサイクルを持ちます。デーモンは接続を開いて開いたままにすることができます。コンソールユーティリティが接続し、動作してから終了します。もちろん、http要求はアトミックですが、Webサーバーはデーモンです。
私は現在、開いている、接続を閉じることを使用して各機能の中にユーザークラスです。これは最も非効率的ですが、すべての例で機能します。テストとして使用される別の方法は、モジュール全体のグローバル接続を宣言して開くことです。もう一つの選択肢は、トップアプリケーション層で接続を作成し、クラスをインスタンス化するときに参照を渡すことですが、これは私にとって最悪の考えです。
私はすべてのアプリケーションアーキテクチャが異なることを知っています。私はベストプラクティスがあるのかどうか、それは何だろうと思っています。
この[質問](http://stackoverflow.com/questions/98687/what-is-the-best-solution-for-database-connection-pooling-in-python)に従って接続プールを見てください – Mark