epe*_*gzz 6 python events sqlalchemy
我需要获取所有受批量删除影响的行,如下所示:
Session.query(SomeClass).filter_by(foo='bar').delete()
Run Code Online (Sandbox Code Playgroud)
我发现可以订阅批量删除事件,但不知道如何使用此事件来实际获取我需要的信息。
好的,找到答案 \?/ 您可以重新执行用于选择行以进行批量删除的 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)
Run Code Online (Sandbox Code Playgroud)
从
https://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.delete
执行批量删除查询。
从数据库中删除与此查询匹配的行。
返回:由数据库的“行数”功能返回的匹配行数。
| 归档时间: |
|
| 查看次数: |
7260 次 |
| 最近记录: |