假设我有一个Inventory
表,其中status
列包含以下可能的值:空白,to_order,优先级,已接收和已排序。
当我查询数据库时,我想按以下顺序订购状态列:
to_order, priority, received, ordered, voided.
如何使用sqlalchemy按列表顺序订购结果?
我的出发点是:sort = desc(Inventory.status)
,我不知道定义自己的排序顺序。
答案 0 :(得分:0)
您必须使用ORDER BY
+ CASE
组合。
首先谈谈纯SQL,看看this example。
ORDER BY (
CASE currency_code
WHEN 'USD'
THEN 1
WHEN 'EUR'
THEN 2
...
END
) ASC
幸运的是,可以在SQLAlchemy的ORM中完成此操作,将order_by
和case结合起来。