如何在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
。
答案 0 :(得分:574)
就像FYI一样,您也可以将这些内容指定为列属性。例如,我可能已经做过:
.order_by(model.Entry.amount.desc())
这很方便,因为您可以在其他地方使用它,例如在关系定义等中。
有关详细信息,您可以refer this
答案 1 :(得分:302)
from sqlalchemy import desc
someselect.order_by(desc(table1.mycol))
来自@ jpmc26的
答案 2 :(得分:69)
你可能做的另一件事是:
.order_by("name desc")
这将导致:ORDER BY name desc。这里的缺点是按顺序使用显式列名。
答案 3 :(得分:17)
您可以在查询中使用.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()
)
)
答案 4 :(得分:2)
您可以尝试: .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()
答案 5 :(得分:1)
@Radu答案的补充,与SQL中一样,如果您有许多具有相同属性的表,则可以在参数中添加表名。
.order_by("TableName.name desc")
答案 6 :(得分:-3)
我们可以通过多种方式做到这一点。最简单的方法是通过以下方式做到这一点-
res=ModelName.query.filter(ModelName.var1==cond).order_by(ModelName.var1.desc())