Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SqlAlchemy按日期时间排序?_Python_Sqlalchemy - Fatal编程技术网

Python SqlAlchemy按日期时间排序?

Python SqlAlchemy按日期时间排序?,python,sqlalchemy,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存储一些带有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文档注意到使用“-”来颠倒顺序,但我肯定遗漏了一些东西


有人能帮忙吗?

你可以这样做:

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())

应该可以工作。

此操作在我的数据库上速度非常慢。有没有更快的方法?@kalu:你是否使用了合适的索引?尝试查看生成的SQL,并对其进行分析。@thirtydot有没有办法在行号之间选择记录,而不是将其限制为3左右?假设我们有100条记录,我需要10到20行按名称排序desc@KishorkumarR:您需要与
limit()
(或:)组合使用。确保您了解它在数据库的底层SQL中是如何工作的。例如,MySQL和MSSQL之间是不同的。另外,您的评论与我的答案并不相关,下次再问新问题或其他问题时,我更喜欢这样做,因为这样可以避免导入
entities = MyEntity.query.order_by(MyEntity.my_date.desc()).limit(3).all()