Получить удаленные строки после массового удаления 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,

0 ответов

Другие вопросы по тегам