How can I do multiple "order_by" in Flask-SQLAlchemy?
53,180
Solution 1
This should work
User.query.order_by(User.popularity.desc(), User.date_created.desc()).limit(10).all()
Solution 2
What you also could do:
from sqlalchemy import and_, or_
User.query.order_by(and_(User.popularity.desc(), User.date_created.desc())).all()
Note: and_
and or_
are coming from the sqlalchemy library and not from flask_sqlalchemy library.
sqlalchemy is a dependency for flask_sqlalchemy, so you should be good.
LTS: You can mix sqlalchemy lib with flask_alchemy lib
Solution 3
You can also use sqlalchemy.sql.text
like this:
from sqlalchemy.sql import text
User.query.order_by(text("popularity desc, date_created desc")).limit(10).all()
Author by
Noé Malzieu
Updated on July 05, 2022Comments
-
Noé Malzieu almost 2 years
Let's say I have a
User
model with fieldspopularity
anddate_created
. I want to do the following query:SELECT * FROM user ORDER BY popularity DESC, date_created DESC LIMIT 10
In SQLAlchemy, for a single one this works:
User.query.order_by(User.popularity.desc()).limit(10).all()
Should I just add another
order_by()
? Or put bothpopularity
anddate_created
in my currentorder_by()
?I want
popularity
to have priority ondate_created
for ordering.