Comment utiliser ORDER BY descending
dans une requête SQLAlchemy comme suit?
Cette requête fonctionne, mais les retourne dans l'ordre croissant:
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 :)
)
Si j'essaye:
.order_by(desc(model.Entry.amount))
alors je reçois: NameError: global name 'desc' is not defined
.
from sqlalchemy import desc
someselect.order_by(desc(table1.mycol))
sage de @ jpmc26
Comme pour votre information, vous pouvez également spécifier ces éléments sous forme d'attributs de colonne. Par exemple, j'aurais peut-être fait:
.order_by(model.Entry.amount.desc())
C'est pratique car vous pouvez l'utiliser à d'autres endroits, comme dans une définition de relation, etc.
Pour plus d'informations, vous pouvez reportez-vous à ceci
Une autre chose que vous pourriez faire est:
.order_by("name desc")
Cela se traduira par: ORDER BY name desc. L’inconvénient est le nom de colonne explicite utilisé dans l’ordre.
Vous pouvez utiliser la fonction .desc()
dans votre requête comme ceci
query = (model.Session.query(model.Entry)
.join(model.ClassificationItem)
.join(model.EnumerationValue)
.filter_by(id=c.row.id)
.order_by(model.Entry.amount.desc())
)
Ceci sera ordonné par montant en ordre décroissant ou
query = session.query(
model.Entry
).join(
model.ClassificationItem
).join(
model.EnumerationValue
).filter_by(
id=c.row.id
).order_by(
model.Entry.amount.desc()
)
)
Vous pouvez essayer: . 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()
Complémentaire à @Radu answer, comme en SQL, vous pouvez ajouter le nom de la table dans le paramètre si vous avez plusieurs tables avec le même attribut.
.order_by("TableName.name desc")