SQLAlchemy ORDER BY DESCENDING?
在如下的sqlAlchemy查询中,如何使用order by
此查询有效,但按升序返回:
1 2 3 4 5 6 | 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 :) ) |
如果我尝试:
1 | .order_by(desc(model.Entry.amount)) |
号
然后我得到:
正如fyi一样,您也可以将这些内容指定为列属性。例如,我可能会这样做:
1 | .order_by(model.Entry.amount.desc()) |
号
这很方便,因为您可以在其他地方使用它,如关系定义等。
有关详细信息,请参阅
1 2 | from sqlalchemy import desc someselect.order_by(desc(table1.mycol)) |
@jpmc26的用法
你可能会做的另一件事是:
1 | .order_by("name desc") |
这将导致:order by name desc。这里的缺点是order by中使用的显式列名。
您可以像这样在查询中使用
1 2 3 4 5 6 | query = (model.Session.query(model.Entry) .join(model.ClassificationItem) .join(model.EnumerationValue) .filter_by(id=c.row.id) .order_by(model.Entry.amount.desc()) ) |
。
这将按金额降序排序或
1 2 3 4 5 6 7 8 9 10 11 12 | query = session.query( model.Entry ).join( model.ClassificationItem ).join( model.EnumerationValue ).filter_by( id=c.row.id ).order_by( model.Entry.amount.desc() ) ) |
您可以尝试:.order_by(clienttotal.id.desc())
1 2 3 4 5 6 7 8 | 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() |
。
补充的at@radu answer和SQL中一样,如果有多个具有相同属性的表,则可以在参数中添加表名。
1 | .order_by("TableName.name desc") |
。
我们可以用多种方法来做,最简单的方法是用下面的方法-
江户十一〔一〕号