others - SQLAlchemy order by降序?

如何在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

时间:


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

这很方便,因为你可以在其他地方使用它,例如,关系定义等等。


from sqlalchemy import desc

用法


someselect.order_by(desc(table1.mycol))

你可以做的另一件事情是:


.order_by("name desc")

缺点是ORDER BY中使用的显式列名。

这对我有效


db_session.query(Posts).order_by(Posts.due_date.desc())

顺便说一下,这是我的表单类。


class Posts(Form):
 task_id = IntegerField('Priority')
 name = TextField('Task Name', [Required()])
 due_date = DateField('Date Due', [Required()])
 priority = SelectField('Priority', [Required()], choices=[('1', '1'),('2', '2'),('3', '3'),('4', '4'),('5', '5')])
 posted_date = DateField('Posted Date', [Required()])
 status = IntegerField('Status')

我有同样的问题,也可以用生成选择 。


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

...