簡體   English   中英

SQLAlchemy 刪除限制行

[英]SQLAlchemy delete limit rows

如何從查詢中刪除最后 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' 未映射

您無法刪除帶有 limit() 的查詢,但可以使用 filter() 刪除查詢。 那么你:

  • 將您的查詢變成帶有 limit(10) 的子查詢。 只需在最后放一個 .subquery()
  • 進行第二個查詢來過濾您的子查詢,您可以刪除它。

如果這對您來說很愚蠢,那么您並不孤單。 我相信這在幾年前被報告為一個錯誤並且從未得到修復。 它與對象類型 limit() 返回有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM