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

时间:2013-04-03 15:35:58

标签: postgresql sqlalchemy flask 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()吗?或者将popularitydate_created放在我当前的order_by()

我希望popularity优先date_created进行排序。

4 个答案:

答案 0 :(得分:69)

这应该有效

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

答案 1 :(得分:0)

您还可以做什么:

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混合

答案 2 :(得分:0)

我还有一个例子:

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

s.t

用户是我的班级 db.Modle

答案 3 :(得分:0)

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

from sqlalchemy.sql import text

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