Stel dat ik een User
-model heb met de velden popularity
en date_created
. Ik wil de volgende query uitvoeren:
SELECT * FROM user ORDER BY popularity DESC, date_created DESC LIMIT 10
In SQLAlchemy werkt dit voor een enkele:
User.query.order_by(User.popularity.desc()).limit(10).all()
Moet ik nog een order_by()
toevoegen? Of zet zowel popularity
als date_created
in mijn huidige order_by()
?
Ik wil dat popularity
voorrang krijgt op date_created
om te bestellen.
Antwoord 1, autoriteit 100%
Dit zou moeten werken
User.query.order_by(User.popularity.desc(), User.date_created.desc()).limit(10).all()
Antwoord 2
Wat u ook zou kunnen doen:
from sqlalchemy import and_, or_
User.query.order_by(and_(User.popularity.desc(), User.date_created.desc())).all()
Opmerking: and_
en or_
komen uit de sqlalchemy-bibliotheek en niet uit de flask_sqlalchemy-bibliotheek.
sqlalchemy is een afhankelijkheid voor flask_sqlalchemy, dus je zou goed moeten zijn.
LTS: je kunt sqlalchemy lib mixen met flask_alchemy lib
Antwoord 3
Je kunt sqlalchemy.sql.text
ook als volgt gebruiken:
from sqlalchemy.sql import text
User.query.order_by(text("popularity desc, date_created desc")).limit(10).all()
Antwoord 4
Ik heb nog een voorbeeld:
user = User.query.order_by(User.id.desc()).limit(10).all()
s.t
Gebruiker is mijn klas db.Modle