Python 如何按大小写排序,降序?
我想使用SQLAlchemy构建此查询:Python 如何按大小写排序,降序?,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我想使用SQLAlchemy构建此查询: select * from t order by case when t.x!=0 then t.y when t.x==0 then 0 end desc; 我尝试了以下方法: db.session.query(t).order_by( db.func.desc( db.func.case([ (t.x!=0, t.y), (t.x==0, 0)
select * from t order by
case
when t.x!=0 then t.y
when t.x==0 then 0
end desc;
我尝试了以下方法:
db.session.query(t).order_by(
db.func.desc(
db.func.case([
(t.x!=0, t.y),
(t.x==0, 0)
]
)
)
但它引发了一个
编程错误“您的SQL语法有错误”
。如何在SQLAlchemy中编写这个case语句?case
函数不是db.func.case
,它是SQLAlchemy.sql.expression.casecase
不是函数,并且存在于db
实例中。当
时,可以指定一个else
子句,而不是第二个。您只需对表达式调用.desc()
,而不用desc()
包装它。查询应该如下所示:
db.session.query(t).order_by(db.case(((t.x != 0, t.y),), else_=0).desc())