J'utilise SqlAlchemy pour stocker certains objets avec un champ DateTime:
my_date = Field(DateTime())
Je voudrais exécuter une requête pour récupérer les quelques objets les plus récents (Entités avec le champ my_date qui sont les plus récentes).
J'ai essayé ce qui suit:
entities = MyEntity.query.order_by(MyEntity.time).limit(3).all()
entities = MyEntity.query.order_by(-MyEntity.time).limit(3).all()
Mais ces requêtes renvoient les mêmes objets dans le même ordre. La documentation SqlAlchemy note l'utilisation du '-' pour inverser l'ordre, mais il me manque sûrement quelque chose ici.
Quelqu'un peut-il aider?
Vous pouvez le faire comme ceci:
entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()
Vous devrez peut-être:
from sqlalchemy import desc
Voici ne documentation .
Une autre option est la suivante:
stmt = select([users_table]).order_by(users_table.c.name.desc())
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()
devrait marcher.
J'utilise sqlalchemy régulièrement afin de pouvoir confirmer que la réponse de thirtydot est correcte, vous devez utiliser sqlalchemy.sql.desc
à la place du -
opérateur pour influencer le order_by.