SqlAlchemy order_by各种情况集合

0 评论
/ /
1247 阅读
/
966 字
10 2018-07

1、按照某个字段的不同值排序,sql语句如下

SELECT * FROM `subject` WHERE id in(18,16,19) order by field(id,18,16,19) 

 sqlalchemy的实现方式:

sqlalchemy.orm.Query(AlphabetTable) \
    .filter(AlphabetTable.letter.in_("gack")) \
    .order_by(sqlalchemy.sql.expression.case(((AlphabetTable.letter == "g", 1),
                                              (AlphabetTable.letter == "a", 2),
                                              (AlphabetTable.letter == "c", 3),
                                              (AlphabetTable.letter == "k", 4))))

 2、某个字段按照中文拼音排序

self.db.query(OrderDo).from_statement(
"select * from order order by convert(department_name using gbk)").all()