2011-12-06 45 views
0

我正在運行一個使用sqlalchemy訪問數據庫層的應用程序。現在我需要獲得所有的插入,更新和刪除操作,我在兩個地方編寫了數據庫操作,並且似乎改變這些代碼的風險很大。無論如何,我可以改變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

before_executeConnection Events記錄的其他事件。逐字逐句提取樣本:

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) 
相關問題