¿Cómo puedo usar ORDER BY descending
en una consulta de SQLAlchemy como la siguiente?
Esta consulta funciona, pero los devuelve en orden ascendente:
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 lo bash
.order_by(desc(model.Entry.amount))
luego me sale: NameError: global name 'desc' is not defined
.
Al igual que un FYI, también puede especificar esas cosas como atributos de columna. Por ejemplo, podría haber hecho:
.order_by(model.Entry.amount.desc())
Esto es útil ya que puede usarlo en otros lugares, como en una definición de relación, etc.
Para más información, puede consultar este
from sqlalchemy import desc someselect.order_by(desc(table1.mycol))
Uso de @ jpmc26
Otra cosa que podrías hacer es:
.order_by("name desc")
Esto dará lugar a: ORDEN POR desc. Nombre. La desventaja aquí es el nombre de columna explícito usado en orden por.
Puedes usar la función .desc()
en tu consulta de esta manera
query = (model.Session.query(model.Entry) .join(model.ClassificationItem) .join(model.EnumerationValue) .filter_by(id=c.row.id) .order_by(model.Entry.amount.desc()) )
Esto ordenará por cantidad en orden descendente o
query = session.query( model.Entry ).join( model.ClassificationItem ).join( model.EnumerationValue ).filter_by( id=c.row.id ).order_by( model.Entry.amount.desc() ) )
Complementario en @Radu answer, Al igual que en SQL, puede agregar el nombre de la tabla en el parámetro si tiene muchas tablas con el mismo atributo.
.order_by("TableName.name desc")
Podemos hacerlo de varias maneras. La más simple será hacerlo de la siguiente manera:
res=ModelName.query.filter(ModelName.var1==cond).order_by(ModelName.var1.desc())