WebApp2、SQLAlchemy、Apache、PostgrSQL などを使用して Web アプリケーションを作成していconfig
ます。データベース資格情報を格納するファイルがあり、scoped_session を使用してセッション オブジェクトを作成します。現在、すべてのビュー ファイルはこの構成ファイルをインポートし、次のようにセッション オブジェクトを使用します。
some_view.py
import config
def view():
query = config.session.query(bla bla)
このアプローチは最終的なものではなく、可能な限り最良の方法を使用したいと考えています。
ここで達成したいのは、ビュー関数の実行後にセッション オブジェクトが閉じられるように、デコレータまたは webapp2関連の組み込みメソッドを使用してセッション オブジェクトを取得する方法です。私は多くの方法を試しましたが、達成できませんでした。実用的なスニペットは高く評価されます。
誰かがより良いアプローチを持っている場合は、提案してください。
ありがとう
編集 - - -
@javex: 提案ありがとうございます。呼び出し時に scoped_session オブジェクトを返し、作業が完了するとセッションを閉じるデコレータ クラスを探しています。参考までにサンプル コードを示しますが、動作しません。
class GetDBSession(object):
"""Decorator class to create DB session object"""
def __init__(self):
self.session = scoped_session(sessionmaker(bind=database_engine))
def __exit__(self): #Dont know if it works
self.session.close()
def __call__(self): #Dont know if it works
return self.session
そして、私はそれを次のように使いたいです:
@GetDBSession()
def view_func():
#work with session object here