如何在SQLAlchemy查询中使用ORDER降序,如下所示?

这个查询是有效的,但是以升序返回它们:

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:全局名称'desc'没有定义。


当前回答

你可以做的另一件事是:

.order_by("name desc")

这将导致:ORDER BY name desc。这里的缺点是在ORDER BY中使用了显式列名。

其他回答

from sqlalchemy import desc
someselect.order_by(desc(table1.mycol))

@jpmc26的用法

你可以做的另一件事是:

.order_by("name desc")

这将导致:ORDER BY name desc。这里的缺点是在ORDER BY中使用了显式列名。

您可以尝试:.order_by(ClientTotal.id.desc())

session = Session()
auth_client_name = 'client3' 
result_by_auth_client = session.query(ClientTotal).filter(ClientTotal.client ==
auth_client_name).order_by(ClientTotal.id.desc()).all()

for rbac in result_by_auth_client:
    print(rbac.id) 
session.close()

仅供参考,您还可以将这些东西指定为列属性。例如,我可能做过:

.order_by(model.Entry.amount.desc())

这很方便,因为它避免了导入,并且您可以在其他地方使用它,例如在关系定义中等等。

有关更多信息,您可以参考SQLAlchemy 1.4文档

与SQL中一样,如果您有许多具有相同属性的表,则可以在参数中添加表名。

.order_by("TableName.name desc")