67

假设我有一个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()吗?或者把两者都popularity放在date_created我的电流中order_by()

我想popularity优先date_created订购。

4

4 回答 4

111

这应该工作

User.query.order_by(User.popularity.desc(), User.date_created.desc()).limit(10).all()
于 2013-04-03T15:56:42.583 回答
1

你还可以做什么:

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

注意:and_andor_来自 sqlalchemy 库,而不是来自 flask_sqlalchemy 库。sqlalchemy 是 flask_sqlalchemy 的依赖项,所以你应该很好。

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

于 2020-06-04T09:00:13.810 回答
1

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

from sqlalchemy.sql import text

User.query.order_by(text("popularity desc, date_created desc")).limit(10).all()
于 2021-04-04T01:33:54.907 回答
0

我还有一个例子:

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

s.t

用户是我的班级 db.Modle

于 2021-01-25T14:51:35.360 回答