Python 在sqlalchemy中,是否有一种排序方法,以便空单元格位于末尾,而不考虑排序顺序?

Python 在sqlalchemy中,是否有一种排序方法,以便空单元格位于末尾,而不考虑排序顺序?,python,sqlalchemy,Python,Sqlalchemy,我有一个非常标准的设置,希望按列排序: someselect.order\u by(asc(table1.mycl)) 但是,我希望mycl的'行或NULL行出现在结果的末尾。有什么方法可以做到这一点吗?在支持NULL LAST的数据库上,您可以通过执行以下操作对NULL进行排序 SELECT * FROM table1 ORDER BY mycol ASC NULLS LAST; 您需要将'转换为NULLs,这样您就可以在数据中或作为查询的一部分执行此操作(我建议您还是这样做): SELEC

我有一个非常标准的设置,希望按列排序:

someselect.order\u by(asc(table1.mycl))


但是,我希望
mycl
'
行或
NULL
行出现在结果的末尾。有什么方法可以做到这一点吗?

在支持
NULL LAST
的数据库上,您可以通过执行以下操作对
NULL
进行排序

SELECT * FROM table1 ORDER BY mycol ASC NULLS LAST;
您需要将
'
转换为
NULL
s,这样您就可以在数据中或作为查询的一部分执行此操作(我建议您还是这样做):

SELECT * FROM table1 ORDER BY (CASE mycol WHEN '' THEN NULL ELSE mycol END) ASC NULLS LAST;
或者,也可以使用更便携的方法

SELECT * FROM table1 ORDER BY (CASE WHEN mycol IS NULL OR mycol = '' THEN 1 ELSE 0 END) ASC, mycol;
要在SQLAlchemy中写入此内容:

.order_by(case([(or_(tabel1.mycol.is_(None), table1.mycol == ""), 1)],
               else_=0), table1.mycol)

SQLAlchemy有一个
null LAST
修饰符,用于
orderby
表达式:

sqlalchemy.sql.expression.nullslast(column)

您可以这样使用它:

from sqlalchemy import nullslast

# ...

someselect.order_by(nullslast(table1.mycol.asc())) 
还有
nullsfirst