SQLAlchemy-在after_execute处理程序中执行插入

时间:2018-12-05 18:07:16

标签: postgresql sqlalchemy

我正在将事件侦听器附加到我的引擎上:

     :
     sa.event.listen(db.engine, 'after_execute', receive_after_execute)
     :



    def receive_after_execute(conn, clauseelement, multiparams, params, result):
        result = conn.execute(
            sa.insert(SomeModel),
            {
                'someKey': 'someValue'
            }
        )

被调用处理程序,但是在 conn.execute 之后,它会触发一个新的 after_execute 事件,该处理程序将再次被调用并触发一个新事件,依此类推。最后,插入了许多 SomeModel 行。

总而言之,我需要在我的应用程序中捕获每个已执行的sql语句,并插入1行有关该语句的数据。

编辑: 顺便说一句,我已经尝试过after_flush事件,并且在大多数情况下效果都很好。但是这样的事情不会触发 after_flush

from sqlalchemy import sql

    query = sql.text("""
        INSERT INTO some_talble(col1, col2)...
        """)

    db.session.execute(query, some_parameters)
    db.session.commit()

这就是我尝试使用 after_execute

的原因

0 个答案:

没有答案