2011-12-06 8 views
0

db層にアクセスするためにsqlalchemyを使用するアプリケーションを実行しています。今私はすべての挿入、更新、削除操作を取得する必要があります、私は2つの多くの場所でDB操作を書いて、それらのコードを変更することは非常に危険になるようです。とにかく、私はちょうどsqlalchemyのコードを変更し、すべての "挿入、更新、削除"操作をキャプチャできますか?sqlalchemyベースのアプリケーションでCRUDをインターセプトする方法は?

私は実行見つけることを試みたが、あまりにも多くの定義がありました:

lib/python2.6/site-packages/SQLAlchemy-0.5.3-py2.6.egg/sqlalchemy/engine/base.py 
463: def execute(self, *multiparams, **params): 
500: def execute(self, object, *multiparams, **params): 
819: def execute(self, object, *multiparams, **params): 
1200: def execute(self, statement, *multiparams, **params): 
1280:  def execute(self, object, *multiparams, **params): 
1808: def execute(self): 
1855: def execute_string(self, stmt, params=None): 

答えて

1

Connection Eventsに記載before_executeや他のイベントを参照してください。ドキュメントのサンプルをそのまま残しておきます。

from sqlalchemy import event, create_engine 

def before_execute(conn, clauseelement, multiparams, params): 
    log.info("Received statement: %s" % clauseelement) 

engine = create_engine('postgresql://scott:[email protected]/test') 
event.listen(engine, "before_execute", before_execute)