Python SqlAlchemy order_by DateTime?

jim*_*imt 31 python sqlalchemy

我正在使用SqlAlchemy存储一些带有DateTime字段的对象:

my_date = Field(DateTime())
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询来检索最近的几个对象(具有my_date字段的实体是最新的).

我尝试过以下方法:

entities = MyEntity.query.order_by(MyEntity.time).limit(3).all()
entities = MyEntity.query.order_by(-MyEntity.time).limit(3).all()
Run Code Online (Sandbox Code Playgroud)

但是这些查询以相同的顺序返回相同的对象.SqlAlchemy文档指出使用' - '来颠倒顺序,但我肯定在这里遗漏了一些东西.

有人可以帮忙吗?

thi*_*dot 61

你可以这样做:

entities = MyEntity.query.order_by(desc(MyEntity.time)).limit(3).all()
Run Code Online (Sandbox Code Playgroud)

您可能需要:

from sqlalchemy import desc
Run Code Online (Sandbox Code Playgroud)

这是一些文档.

另一种选择是:

stmt = select([users_table]).order_by(users_table.c.name.desc())
Run Code Online (Sandbox Code Playgroud)


小智 8

entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()
Run Code Online (Sandbox Code Playgroud)

应该管用.

  • 我更喜欢这个,因为它避免了“导入”。 (2认同)