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' 未映射
解决方案
您不能删除带有 limit() 的查询,但可以删除带有 filter() 的查询。那么你:
- 将您的查询变成一个带有 limit(10) 的子查询。只需在最后放一个 .subquery()
- 进行第二个查询来过滤您的子查询,您可以将其删除。
如果这对您来说很愚蠢,那么您并不孤单。我相信这在几年前被报告为一个错误并且从未得到修复。它与对象类型 limit() 返回有关。
推荐阅读
- javascript - 在嵌套数组对象中为 SectionList 数据按索引设置状态
- java - 如何在 IntelliJ IDEA 中构建包含 .java 和 .class 的包?
- android - 当 NavHost 不在 MainActivity 中时 Android onSupportNavigateUp
- android - 如何将哈希映射放在另一个里面
- javascript - “document.getElementsByClassName”找到元素但无法访问
- node.js - Google Drive API 排除文件夹
- c - 如何在 For 循环中输入两个条件?
- amazon-web-services - 为公共存储桶/文件公开 AWS S3 ACL?
- android - 更新 Google Play 服务通知使 Firebase 测试实验室设备上的测试失败
- browser - 如何更改浏览器中的 `prefers-reduced-motion` 设置?