Python SQLAlchemy删除限制行

Python SQLAlchemy删除限制行,python,sqlalchemy,Python,Sqlalchemy,如何从查询中删除最后10行 我有疑问: query=session.query(MyTableClass)\ .filter(MyTableClass.country=='USA')\ .order\u by(MyTableClass.id.asc())\ .限额(10) 如何仅删除10行 我试过: query.delete()- 错误:调用limit()时无法调用Query.update()或Query.delete() 会话。删除(查询)- 错误:类“sqlalchemy.orm.quer

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

我有疑问:

query=session.query(MyTableClass)\
.filter(MyTableClass.country=='USA')\
.order\u by(MyTableClass.id.asc())\
.限额(10)
如何仅删除10行

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

会话。删除(查询)
-
错误:类“sqlalchemy.orm.query.query”未映射

您不能删除限制为()的查询,但可以使用筛选器()删除查询。所以你:

  • 使您的查询成为一个子查询,并在其上设置限制(10)。只需在末尾添加一个.subquery()
  • 进行第二个查询以筛选子查询,然后可以将其删除

如果你觉得这很傻,你并不孤单。我相信这在几年前被报道为一个bug,并且从未得到修复。这与对象类型limit()返回有关。

您使用的数据库是什么?哇,这太奇怪了。。尝试“按子查询筛选”会引发元数据存储和会话同步问题。直接执行SQL文本而不是使用ORM感觉更干净。