코딩공부/Django

Django Queryset, 데이터베이스에서 원하는 데이터 조회

Dong_Devlog 2022. 11. 15. 20:03

Queryset 이란?

Django ORM에서 제공하는 데이터 타입으로, 데이터베이스에서 전달받은 객체 목록으로 구조는 list이지만 파이썬의 기본 자료구조가 아니기 때문에 파이썬 파일에서 읽고 쓰기 위해서는 자료형 변환을 해줘야 한다.

 

다양한 데이터 조회 방법

기본 구조는 ModelName.objects를 통해 DB 데이블에 저장 된 데이터를 조회 한다.

User.objects
  • all

User 테이블 안에 저장 된 모든 데이터를 조회. Queryset 타입으로 반환. 

User.objects.all()
  • filter

테이블의 데이터를 필터링해서 조회. and와 or로 조금 더 구체적으로 원하는 데이터를 조회 가능. Queryset 타입으로 반환. 

User.objects.filter()
  • exclude

filter와 상반되는 개념으로 특정 조건을 제외한 데이터만 조회. Queryset 타입으로 반환. 

User.objects.exclude()
  • get

조건값이 유일한 데이터를 조회. 보통 pk 또는 id 값을 조건값으로 넣어 사용한다. 0개 이거나 2개 이상이면 에러 발생

Queryset 타입이 아닌 객체 타입으로 반환한다.

User.objects.get()

 

filter를 통한 특정 데이터 조회 방법

필드명__조건 = 조건값 을 filter의 인자로 넘겨주어 조건에 부합하는 데이터를 조회할 수 있다.

User.objects.filter(username__contains="a")
  • __contatins : 특정 문자가 포함된 것을 찾을 때 사용
  • __icontains :특정 문자가 포함된 것을 찾을 때 사용 (대소문자를 구분하지 않음)
  • __startswith : 특정 문자로 시작하는 것을 찾을 때 사용
  • __endswith : 특정 문자로 끝나는 것을 찾을 때 사용
  • __gt : 특정 값 보다 큰 데이터만 조회 (greater than의 약자) 
  • __lt : 특정 값 보다 작은 데이터만 조회 (less than의 약자)
  • __isnull : True로 지정 시 특정 필드 값이 null인 것만 조회
  • __in : 리스트 안에 지정한 문자열들 중에 하나라도 포함된 데이터를 찾을 때 사용 (단, 문자열과 정확히 일치해야함)