SQLAlchemy删除限制行

时间:2019-09-05 00:01:43

标签: python sqlalchemy

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

我有疑问:

query = session.query(MyTableClass) \ 
.filter(MyTableClass.country=='USA') \ 
.order_by(MyTableClass.id.asc()) \ 
.limit(10)

如何仅删除10行?

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

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

1 个答案:

答案 0 :(得分:3)

您不能删除带有limit()的查询,但是可以使用filter()删除一个查询。所以你:

  • 使您的查询成为带有limit(10)的子查询。只需在末尾放一个.subquery()
  • 进行第二次查询以过滤您的子查询,您可以删除它。

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