
IT/파이썬 2023. 5. 1.
Django - SQL group by 를 ORM 에서 구현하기
group by는 SQL에서 데이터를 그룹화하는 구문입니다. 장고 ORM에서는 values() 메소드를 사용하여 group by의 대상이 되는 컬럼을 지정할 수 있습니다. 이후 annotate() 함수로 집계된 데이터에서 집계 함수를 실행할 수 있습니다. 예를 들어, 다음과 같은 쿼리는 장고 ORM으로 다음과 같이 표현할 수 있습니다. # SQL SELECT name, COUNT(*) FROM test GROUP BY name; # Django ORM queryset = Test.objects.values('name').annotate(count=Count('*')) 위의 예제에서 values('name')은 GROUP BY name과 동일한 역할을 합니다. 이후 annotate(count=Count('..

IT/파이썬 2023. 5. 1.
Django - ORM aggregation 함수 설명과 예
앞서 살펴본 Group by 하는 결과에 많이 사용되는 집계함수에 대해서도 잠깐 살펴보자. annotate() 구문 안에서 자주 사용되는 aggregation funcion 은 아래 처럼 몇가지를 사용할 수 있다. 장고 ORM에서 사용할 수 있는 주요 집계 함수는 다음과 같습니다. Avg: 평균을 계산합니다. Count: 개수를 계산합니다. Max: 최대값을 계산합니다. Min: 최소값을 계산합니다. Sum: 합계를 계산합니다. 예제로 알아보면 가장 쉽다. 앞서 살펴본 동일한 Test 모델과 값이 있다고 가정한다. 2023.05.01 - [IT/파이썬] - Django - SQL group by 를 ORM 에서 구현하기 Django - SQL group by 를 ORM 에서 구현하기 group by는 S..

IT/파이썬 2023. 4. 18.
Django ORM - Q 객체, F 객체 사용
django orm에서 Q 객체를 사용하면 OR/AND 조건을 적용할 수 있습니다. Q 객체는 복잡한 조건식을 표현할 수 있도록 도와주는 객체로, 논리 연산자 (|, &, ~)를 사용할 수 있습니다1. 예를 들어, filter(Q(name=“lee”) | Q(age__gt=20))는 name이 "lee"이거나 age가 20보다 큰 레코드를 필터링합니다1. Q 객체는 filter(), exclude(), get() 등의 메소드에 인자로 전달할 수 있습니다2. Q 객체끼리는 연결하여 사용할 수 있습니다2. 예를 들어, filter(Q(name=“lee”) & Q(age__gt=20), Q(gender=“M”))는 name이 "lee"이고 age가 20보다 크며 gender가 "M"인 레코드를 필터링합니다2...