如何拦截SQLAlchemy应用中的CRUD?
我正在运行一个应用程序,这个程序使用sqlalchemy来访问数据库。现在我需要获取所有的插入、更新和删除操作。我在很多地方写了数据库操作,感觉修改这些代码会很危险。有没有办法让我只改sqlalchemy的代码,捕捉到所有的“插入、更新、删除”操作呢?
我试着找execute这个方法,但发现定义实在太多了:
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 个回答
1
请查看 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:tiger@localhost/test')
event.listen(engine, "before_execute", before_execute)