Цель:
После DELETE
запросов к модели мне нужно знать, какие элементы были удалены, а какие - нет.Это может быть выведено из части SELECT
запроса, которая должна быть выполнена до того, как произойдет delete .В настоящее время я делаю это вручную, то есть я выполняю этот явный SELECT перед выполнением массового удаления.Тем не менее, поскольку возвращение количества неудачно удаленных элементов и их соответствующих идентификаторов является частью соглашения, каждый раз, когда что-то удаляется из таблицы «А», это должно происходить.Мне было интересно, можно ли как-нибудь добавить эту информацию к возвращению delete()
, например, свойство rowcount
.
Просматривая эту запись Я думал, что смогу сделать это со следующим:
from sqlalchemy import Table, Column, ForeignKey, ...
from sqlalchemy.dialects.mysql import INTEGER
a = Table('A',...
mysql_engine='InnoDB',
mysql_charset='utf8'
)
def before_bulk_delete(mapper, connection, target):
print("BANANAS ******* SOMETHING HAS BEEN DELETED")
print(target)
# It's here where I should be able to execute the select part of the statement
event.listen(a, 'before_bulk_delete', before_bulk_delete)
Но это никогда не вызывается вообще.