Python SqlAlchemy order_by DateTime?

时间:2011-01-03 05:35:13

标签: python sqlalchemy

我正在使用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文档指出使用' - '来颠倒顺序,但我肯定在这里遗漏了一些东西。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:52)

你可以这样做:

entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()

您可能需要:

from sqlalchemy import desc

这是some documentation

另一种选择是:

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。