如何使用sqlalchemy按列表排序结果?

时间:2016-12-06 19:56:26

标签: python postgresql sqlalchemy

假设我有一个Inventory表,其中status列包含以下可能的值:空白,to_order,优先级,已接收和已排序。

当我查询数据库时,我想按以下顺序订购状态列:

to_order, priority, received, ordered, voided.

如何使用sqlalchemy按列表顺序订购结果?

我的出发点是:sort = desc(Inventory.status),我不知道定义自己的排序顺序。

1 个答案:

答案 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_bycase结合起来。