我正在使用SqlAlchemy存储一些带有DateTime字段的对象:
my_date = Field(DateTime())
我想运行一个查询来检索最近的几个对象(具有my_date字段的实体是最新的)。
我尝试了以下内容:
entities = MyEntity.query.order_by(MyEntity.time).limit(3).all()
entities = MyEntity.query.order_by(-MyEntity.time).limit(3).all()
但是这些查询以相同的顺序返回相同的对象。 SqlAlchemy文档指出使用' - '来颠倒顺序,但我肯定在这里遗漏了一些东西。
有人可以帮忙吗?
答案 0 :(得分:52)
你可以这样做:
entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()
您可能需要:
from sqlalchemy import desc
另一种选择是:
stmt = select([users_table]).order_by(users_table.c.name.desc())
答案 1 :(得分:6)
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()
应该有用。
答案 2 :(得分:1)
我经常使用sqlalchemy,所以我可以确认thirtydot的答案是否正确,您需要使用sqlalchemy.sql.desc
代替-
运算符来影响order_by。