2016-12-06 7 views
1

status列の値がvoid、to_order、priority、received、orderedのInventoryテーブルがあるとします。sqlalchemyを使用して結果をリストで並べ替えるにはどうすればよいですか?

私はこの順序で、ステータス列を注文したいデータベース照会:私はリストの順序で私の結果を注文するSQLAlchemyのを使用するにはどうすればよい

to_order, priority, received, ordered, voided. 

を?

私の出発点はsort = desc(Inventory.status)です。私は自分のソート順を定義することに気付きません。

+0

この順序付けが再利用される場合、 'name'や' sort_order'などの列を含む 'InventoryStatus'表を作成(または拡張)するオプションがあります。次に、クエリがこのテーブルに結合され、結合されたテーブルの列によって結果が順序付けられます。他の目的に使用される他の修飾子/フラグ列があることがよくあります。例えば、ユーザアクションが必要でないことを示すためにフラグ 'completed'(これは' received'と 'voided'ではTrueになります)を持つことができます。 – van

答えて

0

ORDER BY + CASEの組み合わせにする必要があります。

純粋なSQLについては、まずthis exampleをご覧ください。

ORDER BY (
    CASE currency_code 

    WHEN 'USD' 
    THEN 1 

    WHEN 'EUR' 
    THEN 2 

    ... 

    END 
) ASC 

幸い、それはorder_bycaseを組み合わせ、SQLAlchemyのORMの中で正確にこれを行うことが可能です。

関連する問題