sqlalchemy: obtener filas afectadas por la eliminación masiva

Necesito obtener todas las filas que fueron afectadas por una eliminación masiva como esa:

Session.query(SomeClass).filter_by(foo='bar').delete() 

Encontré la posibilidad de suscribirme a eventos de eliminación masiva, pero no puedo averiguar cómo puedo usar este evento para obtener la información que necesito.

Bien, encontré la respuesta \ ☺ / Puede volver a ejecutar la instrucción de selección que se usó para seleccionar las filas para la eliminación masiva. Desafortunadamente, no puede consultar los objetos ORM, pero puede obtener una lista de todas las filas eliminadas con los valores de columna antiguos como tuplas:

 def after_bulk_delete(session, query, query_context, result): affected_table = query_context.statement.froms[0] affected_rows = query_context.statement.execute().fetchall() sqlalchemy.event.listen(Session, "after_bulk_delete", after_bulk_delete) 

Desde

https://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.delete

Realizar una consulta de eliminación masiva.

Elimina las filas que coinciden con esta consulta de la base de datos.

Devoluciones: el recuento de filas coincidentes con las devueltas por la función de “conteo de filas” de la base de datos.