Ответ 1
Вы можете сделать это следующим образом:
entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()
Вам может потребоваться:
from sqlalchemy import desc
Здесь некоторая документация.
Я использую SqlAlchemy для хранения некоторых объектов с полем DateTime:
my_date = Field(DateTime())
Я хотел бы запустить запрос для извлечения самых последних нескольких объектов (Entities с самым новым полем my_date).
Я пробовал следующее:
entities = MyEntity.query.order_by(MyEntity.time).limit(3).all()
entities = MyEntity.query.order_by(-MyEntity.time).limit(3).all()
Но эти запросы возвращают одни и те же объекты в том же порядке. В документации SqlAlchemy указано использование "-", чтобы отменить порядок, но я, несомненно, здесь что-то пропустил.
Может ли кто-нибудь помочь?
Вы можете сделать это следующим образом:
entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()
Вам может потребоваться:
from sqlalchemy import desc
Здесь некоторая документация.
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()
должен работать.
Я регулярно использую sqlalchemy, поэтому я могу подтвердить, что ответ на тридцать правильный, вам нужно использовать sqlalchemy.sql.desc
вместо оператора -
для воздействия на order_by.