Создание сущности в SQLAlchemy - PullRequest
1 голос
/ 24 мая 2010

Я хочу написать SessionExtension, которое запускает событие «Foo-create» или «Bar-create» каждый раз, когда новый Foo или новый Bar фиксируется в базе данных. Однако, находясь внутри метода after_commit, я не знаю, где найти какие объекты были зафиксированы. Где я могу получить эту информацию?

Ответы [ 2 ]

2 голосов
/ 24 мая 2010

Экземпляр Session имеет атрибут new, dirty, deleted, содержащий соответственно добавленные, обновленные и удаленные объекты.Они будут уже пустыми при выполнении after_commit, но они доступны в after_flush.Вы можете расширить свой собственный список добавленных экземпляров для каждого сброса в after_flush ловушке и использовать их для событий и очистить в after_commit.

0 голосов
/ 24 мая 2010

Посмотрите на биты расширения картографа.Он предоставляет вам до / после вставки / обновления / удаления хуков, что вы можете разместить свой код для такого рода вещей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...