繁体   English   中英

如何在 Flask-SQLAlchemy 中执行多个“order_by”?

[英]How can I do multiple "order_by" in Flask-SQLAlchemy?

比方说,我有一个User与领域模型popularitydate_created 我想做以下查询:

SELECT * FROM user ORDER BY popularity DESC, date_created DESC LIMIT 10

在 SQLAlchemy 中,对于单个这样的工作:

User.query.order_by(User.popularity.desc()).limit(10).all()

我应该添加另一个order_by()吗? 或者在我当前的order_by() popularitydate_created

我希望popularity优先于date_created进行订购。

这应该工作

User.query.order_by(User.popularity.desc(), User.date_created.desc()).limit(10).all()

你还可以做什么:

from sqlalchemy import and_, or_
User.query.order_by(and_(User.popularity.desc(), User.date_created.desc())).all()

注: and_or_从SQLAlchemy的图书馆来了,而不是从flask_sqlalchemy库。 sqlalchemy 是flask_sqlalchemy 的依赖项,所以你应该很好。

LTS:您可以将 sqlalchemy lib 与 flask_alchemy lib 混合使用

我还有一个例子:

user = User.query.order_by(User.id.desc()).limit(10).all()

s.t

用户是我的班级 db.Modle

你也可以像这样使用sqlalchemy.sql.text

from sqlalchemy.sql import text

User.query.order_by(text("popularity desc, date_created desc")).limit(10).all()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM