【问题标题】:how to intercept CRUD in sqlalchemy based app?如何在基于 sqlalchemy 的应用程序中拦截 CRUD?
【发布时间】:2011-12-06 16:14:47
【问题描述】:

我正在运行一个使用 sqlalchemy 访问数据库层的应用程序。现在我需要获取所有的插入、更新、删除操作,我在两个很多地方写了 db 操作,似乎更改这些代码会有很大风险。无论如何,我可以更改 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):

【问题讨论】:

    标签: python database orm sqlalchemy crud


    【解决方案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:tiger@localhost/test')
    event.listen(engine, "before_execute", before_execute)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多