【问题标题】:Sqlalchemy query orderSqlalchemy 查询顺序
【发布时间】:2025-12-03 01:30:02
【问题描述】:

我正在重构我的烧瓶应用程序,并且想知道烧瓶-sqlalchemy 是如何工作的 - 从右到左,反之亦然。

例如,这个命令是先过滤再排序再全选,还是先全选再排序再过滤?

items = db.session.query(MyDbModel).filter_by(status=1).order_by(desc('created')).all()

【问题讨论】:

  • 数据库会先根据where子句(过滤器)进行过滤,最后对数据进行排序。
  • 这个问题真的是关于Python的,不是flask也不是sqlalchemy,答案是从左到右。这也很有意义:如何过滤和订购尚未查询的内容?

标签: python flask sqlalchemy flask-sqlalchemy


【解决方案1】:

翻译成 SQL 是这样的

SELECT * FROM MyDbModel
WHERE status = 1
ORDER BY created DESC

如果您在all() 运算符之前打印查询,您实际上可以看到 SQL 查询。

print(str(q))

qall() 函数之前的查询对象。 所以,回答你的问题,它首先过滤,然后排序。

【讨论】:

  • @Gepgecici2,我回答你的问题了吗?