반응형

Sqlalchemy ORM, order_by에 case 이용 예제

글. 수알치 오상문

 

Sqlalchemy에서 문법 변화가 생겨서 order_by에서 case를 사용하던 예전 예제를 이용하면 오류가 나는 경우가 있습니다.

그 경우에 아래 구조처럼 적용해서 사용해보세요. 

 

[참고] case 함수 이용시 임포트 추가

from sqlalchemy import case

 

        Fruit = models.Fruit

        ret = db.query( Fruit )\
                    .order_by( case( ( Fruit.name == '사과', 1),
                                               ( Fruit.name == '배', 2),
                                               ( Fruit.name == '감', 3),
                                                else_=4))\
                    .all()

 

이 예제는 Fruit 테이블의 과일 이름 컬럼(name)을 정렬할 때, 정렬 순서를 사과, 배, 감 순서로 변경하고, 나머지는 그 이후 순서로 배치하는 쿼리입니다. 

 

그냥 정렬(오름차순)하면 감, 배, 사과가 되겠지만, 저 쿼리를 적용하면 사과, 배, 감, 기타... 순서가 적용됩니다.

 

 

반응형

+ Recent posts