SQLAlchemy 按降序排序?
我该如何在SQLAlchemy查询中使用ORDER BY descending
,像下面这样?
这个查询可以正常工作,但返回的结果是按升序排列的:
query = (model.Session.query(model.Entry)
.join(model.ClassificationItem)
.join(model.EnumerationValue)
.filter_by(id=c.row.id)
.order_by(model.Entry.amount) # This row :)
)
如果我尝试这样:
.order_by(desc(model.Entry.amount))
那么我会得到:NameError: global name 'desc' is not defined
。
6 个回答
99
你还可以做另外一件事:
from sqlalchemy.sql import text
...
.order_by(text("name desc")
这样会得到:按照名字降序排列。这里的缺点是,在排序时需要明确指定列名。
1048
顺便提一下,你也可以把这些东西作为列的属性来指定。例如,我可能会这样做:
.order_by(model.Entry.amount.desc())
这样做很方便,因为可以避免使用import
,而且你还可以在其他地方使用,比如在关系定义中等等。
想了解更多信息,可以参考这个SQLAlchemy 1.4 文档
451
from sqlalchemy import desc
someselect.order_by(desc(table1.mycol))
这是来自 @jpmc26 的一段内容,提到了一些用法,具体可以查看这个链接:Usage。