[Django] 장고 쿼리셋

sudog·2023년 9월 12일
0

Django

목록 보기
10/13

장고에서는 ORM을 사용해 데이터베이스에 접근할 수 있다. 이렇게 쿼리를 직접 작성하지 않고 API 메서드를 이용해서 데이터베이스와 통신을 추상화하는 객체를 쿼리셋(QuerySet)이라고 한다.

MyModel.objects과 같이 특정 모델의 뒤에 .objects를 붙이면 해당 모델의 테이블과 상호작용하는 진입점이 생성된다. 이제 쿼리셋 API를 사용하면 객체가 쿼리를 실행하고 새로운 쿼리셋이나 데이터를 반환한다. 자주 사용하는 것들을 알아보자.

QuerySet API

  • all() : 모든 데이터를 담은 쿼리셋을 반환.
  • values() : 원하는 속성을 딕셔너리로 반환
  • values_list() : 원하는 속성을 튜플로 반환
  • filter() : 조건과 일치하는 쿼리셋 반환
  • exclude() : 조건과 일치하지 않는 쿼리셋 반환
  • annotate() : 집계함수를 사용하여 새로운 속성을 쿼리셋에 추가
  • get() : 조건과 일치하는 단 하나의 값을 반환
  • order_by() : 특정 필드를 기준으로 정렬
  • exists() : 조건을 만족하는 데이터의 유무 확인
  • create() : 인자로 받은 데이터 생성
  • update() : 인자로 받은 데이터 수정
  • delete() : 조건을 만족하는 데이터 삭제

주의할 점이 있다. 쿼리셋을 반환하는 메서드만 체이닝이 가능하다. 체이닝이란 이런 것을 말한다.

MyModel.objects.filter(name="musk").order_by("-created_at")

이렇게 여러 메서드를 사용해서 원하는 SQL명령을 실행할 수 있다.

profile
안녕하세요

0개의 댓글