Python 활용
Sqlalchemy ORM, order_by에 case 이용 예제
수알치
2023. 12. 12. 12:05
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)을 정렬할 때, 정렬 순서를 사과, 배, 감 순서로 변경하고, 나머지는 그 이후 순서로 배치하는 쿼리입니다.
그냥 정렬(오름차순)하면 감, 배, 사과가 되겠지만, 저 쿼리를 적용하면 사과, 배, 감, 기타... 순서가 적용됩니다.
반응형