SQLAlchemy ORDER BY DESCENDING?

前端 未结 6 1830
迷失自我
迷失自我 2020-11-27 09:21

How can I use ORDER BY descending in a SQLAlchemy query like the following?

This query works, but returns them in ascending order:



        
相关标签:
6条回答
  • 2020-11-27 09:45

    You can try: .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()
    
    0 讨论(0)
  • 2020-11-27 09:48

    Complementary at @Radu answer, As in SQL, you can add the table name in the parameter if you have many table with the same attribute.

    .order_by("TableName.name desc")
    
    0 讨论(0)
  • 2020-11-27 09:50

    One other thing you might do is:

    .order_by("name desc")
    

    This will result in: ORDER BY name desc. The disadvantage here is the explicit column name used in order by.

    0 讨论(0)
  • 2020-11-27 10:00

    Just as an FYI, you can also specify those things as column attributes. For instance, I might have done:

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

    This is handy since it avoids an import, and you can use it on other places such as in a relation definition, etc.

    For more information, you can refer this

    0 讨论(0)
  • 2020-11-27 10:05
    from sqlalchemy import desc
    someselect.order_by(desc(table1.mycol))
    

    Usage from @jpmc26

    0 讨论(0)
  • 2020-11-27 10:09

    You can use .desc() function in your query just like this

    query = (model.Session.query(model.Entry)
            .join(model.ClassificationItem)
            .join(model.EnumerationValue)
            .filter_by(id=c.row.id)
            .order_by(model.Entry.amount.desc())
            )
    

    This will order by amount in descending order or

    query = session.query(
        model.Entry
    ).join(
        model.ClassificationItem
    ).join(
        model.EnumerationValue
    ).filter_by(
        id=c.row.id
    ).order_by(
        model.Entry.amount.desc()
    )
    )
    

    Use of desc function of SQLAlchemy

    from sqlalchemy import desc
    query = session.query(
        model.Entry
    ).join(
        model.ClassificationItem
    ).join(
        model.EnumerationValue
    ).filter_by(
        id=c.row.id
    ).order_by(
        desc(model.Entry.amount)
    )
    )
    

    For official docs please use the link or check below snippet

    sqlalchemy.sql.expression.desc(column) Produce a descending ORDER BY clause element.

    e.g.:

    from sqlalchemy import desc
    
    stmt = select([users_table]).order_by(desc(users_table.c.name))
    

    will produce SQL as:

    SELECT id, name FROM user ORDER BY name DESC
    

    The desc() function is a standalone version of the ColumnElement.desc() method available on all SQL expressions, e.g.:

    stmt = select([users_table]).order_by(users_table.c.name.desc())
    

    Parameters column – A ColumnElement (e.g. scalar SQL expression) with which to apply the desc() operation.

    See also

    asc()

    nullsfirst()

    nullslast()

    Select.order_by()

    0 讨论(0)
提交回复
热议问题