我想对一个SQLAlchemy ORM对象按字段排序,但是需要按照特定值的顺序(既不是升序也不是降序)。如果在MySQL上执行这个查询,它应该是这样的;
SELECT letter FROM alphabet_table WHERE letter in ('g','a','c','k')
ORDER BY FIELDS( letter, 'g','a','c','k');
输出内容:
letter
------
g
a
c
k
对于SQLAlchemy,我一直在尝试以下操作:
session.query(AlphabetTable).filter(AlphabetTable.letter.in_(('g','a','c','k'))).order_by(case([(AlphabetTable.letter=='g',1),(AlphabetTable.letter=='a',2),(AlphabetTable.letter=='c',3),(AlphabetTable.letter=='k',4)], else_=5))
这样做不起作用...有什么想法吗?这是一个小的一次性常量列表,我可以创建一个带有顺序的表然后进行连接,但那似乎有点过分。