假设我的User
模型包含字段popularity
和date_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
进行排序。
答案 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()