开发者

Hooking entity creation in SQLAlchemy

开发者 https://www.devze.com 2023-01-01 00:23 出处:网络
I want to write a SessionExtension that fires a \'Foo-created\' event or \'Bar-created\' event every time a new Foo or new Bar is committed to the database. However, once inside the after_commit meth开

I want to write a SessionExtension that fires a 'Foo-created' event or 'Bar-created' event every time a new Foo or new Bar is committed to the database. However, once inside the after_commit meth开发者_Python百科od, I don't know where to find which entities have been committed. Where do I get this information?


The Session instance has attribute new, dirty, deleted holding added, updated and deleted objects respectively. They will be already empty when after_commit is executed, but they are available in after_flush. You can extent your own list of added instances for each flush in after_flush hook and use them for events and clear in after_commit.


Look at the Mapper Extension bits. It provides you before/after insert/update/delete hooks that you can place your code for this kind of thing.

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号