Получить удаленные строки после массового удаления SQLAlchemy
Ответ здесь уже устарел.
Вещи, которые я пытался, что не работает:
@event.listens_for(Session, 'after_bulk_delete')
def receive_before_delete(delete_context):
# Using context.statement
context = delete_context.context
delete_context.session.execute(context.statement).fetchall()
# Using delete_context.query
delete_context.session.execute(delete_context.query.statement).fetchall()
# Using delete_context.result
result = delete_context.result
while result.returns_rows:
row = result.fetchone()
# Not using delete_context.session
# Throws: *** UnboundExecutionError: This AnnotatedSelect object is not directly bound to a Connection or Engine.Use the .execute() method of a Connection or Engine to execute this construct.
delete_context.query.statement.execute()
Первые два подхода возвращают пустые списки, в то время как затронутые строки фактически удаляются.
delete_context.result.rowcount
возвращает правильное количество строк, которые будут удалены.
query_context.statement
является None
,