web-dev-qa-db-ja.com

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

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

@ jpmc26からの使用法

306
AP257

FYIと同じように、それらを列属性として指定することもできます。例えば、私はしたかもしれません:

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

関係定義などの他の場所で使用できるので、これは便利です。

詳しくは、 を参照してください

584
Rick

あなたがするかもしれないもう一つのことは:

.order_by("name desc")

ORDER BY name descとなります。ここでの不利な点は、byによって順番に使用される明示的なカラム名です。

69
Radu

このように、クエリで.desc()関数を使用できます。

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

これは金額の降順で注文するか、

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

あなたは試すことができます:。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()
3
Artem Baranov

SQLと同様に、同じ属性を持つテーブルが多数ある場合は、パラメータにテーブル名を追加できます。

.order_by("TableName.name desc")
1
Michael