
[英]Flask-SqlAlchemy query with order_by and pagination is very slow
[英]How can I do multiple "order_by" in Flask-SQLAlchemy?
比方说,我有一个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()
吗? 或者在我当前的order_by()
popularity
和date_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.