我需要获取受批量删除影响的所有行:
Session.query(SomeClass).filter_by(foo='bar').delete()
我找到了the possibility to subscribe to bulk delete events,但无法弄清楚如何使用此事件来实际获取我需要的信息。
答案 0 :(得分:4)
好的,找到答案\☺/您可以重新执行用于选择批量删除行的select语句。遗憾的是,您无法查询ORM对象,但您可以获取所有已删除行的列表,其中旧列值为元组:
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)
答案 1 :(得分:2)
来自
https://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.delete
执行批量删除查询。
从数据库中删除此查询匹配的行。
返回:数据库的“行”返回的匹配行数 计算“功能。