SQLAlchemy 删除限制行

max*_*kin 5 python sqlalchemy

如何从查询中删除最后 10 行?

我有疑问:

query = session.query(MyTableClass) \ 
.filter(MyTableClass.country=='USA') \ 
.order_by(MyTableClass.id.asc()) \ 
.limit(10)
Run Code Online (Sandbox Code Playgroud)

如何仅删除 10 行?

我试过: query.delete()- 错误:调用 limit() 时无法调用 Query.update() 或 Query.delete()

session.delete(query) - 错误:类 'sqlalchemy.orm.query.Query' 未映射

Amb*_*ans 7

您无法删除带有 limit() 的查询,但可以使用 filter() 删除查询。那么你:

  • 将您的查询变成带有 limit(10) 的子查询。只需在末尾添加 .subquery()
  • 进行第二个查询来过滤您的子查询,您可以将其删除。

如果你觉得这很愚蠢,那么你并不孤单。我相信几年前这被报告为一个错误并且从未得到修复。它与 limit() 返回的对象类型有关。