Сцепление создания объекта в SQLAlchemy

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

1
задан Dan Ellis 24 May 2010 в 07:27
поделиться

2 ответа

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

2
ответ дан 3 September 2019 в 00:20
поделиться

Посмотрите на биты Mapper Extension. Он предоставляет вам крючки "до/после вставки/обновления/удаления", которые вы можете поместить в свой код для такого рода вещей.

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

0
ответ дан 3 September 2019 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: