代码之家  ›  专栏  ›  技术社区  ›  Isvara

在SQLAlchemy中创建挂接实体

  •  1
  • Isvara  · 技术社区  · 15 年前

    我想编写一个sessionextension,每当新的foo或新的bar提交到数据库时,它将激发“foo created”事件或“bar created”事件。但是,一旦进入after-commit方法,我就不知道在哪里可以找到已提交的实体。我从哪里得到这些信息?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Denis Otkidach    15 年前

    这个 Session 实例具有属性 new , dirty , deleted 分别保存添加、更新和删除的对象。它们在什么时候已经空了 after_commit 执行,但在 after_flush . 您可以为每个刷新扩展自己的添加实例列表 后冲洗 钩住并在事件中使用它们 事后承诺 .

        2
  •  0
  •   Rick    15 年前

    看看映射器扩展位。它提供了插入/更新/删除钩子之前/之后的功能,您可以为这类事情放置代码。

    http://www.sqlalchemy.org/docs/mappers.html?highlight=mapper%20extension#extending-mapper