TIL69. Django ORM : 필요한 column만 지정해서 조회하기

ID짱재·2021년 11월 2일
0

Django ORM

목록 보기
3/7
post-thumbnail

📌 이 포스팅에서는 values, values_list, only에 대해서 정리하였습니다.


🌈 필요한 column만 지정해서 조회하기

🔥 SQL에서 필요한 column만 지정하는 방법

🔥 only 메서드

🔥 values 메서드와 values_list 메서드


1. SQL에서 필요한 column만 지정하는 방법

🤔 필요한 column만 지정해서 DB에서 읽어오는 방법

✔️ SQL문에서 필요한 column만 가져오려면 SELECT * FROM의 * 대신 column명을 명시한다.

✔️ 불필요한 DB조회를 줄이기 때문에 최적화에 도움준다.

mysql>>> SELECT 'id', 'email' FROM accounts WHERE id < 5;

✔️ 불필요한 column을 제외하고 조회하는 방법은 아래 2가지를 사용한다.

  • 🚀 방법1: only 메서드
  • 🚀 방법2: 쿼리셋의 values 메서드와 values_list 메서드

2. only 메서드

🤔 all이 아닌 only를 사용하면 column을 지정할 수 있다.

✔️ only 매서드 안에 column을 지정해준다.

Account.objects.filter(id__lt = 5).only("id", "username")

3. values 메서드와 values_list 메서드

🤔 values 메서드 사용 방법

✔️ values 매서드는 기본적으로 해당하는 key와 value를 딕셔너리로 반환한다.

>>> Account.objects.filter(id__lt=5).values()
# [{'id': 1, 'username': '장재원', 'email': 'jaewon@gmail.com', 'sex': 'male', 'age': 32}, {'id': 2, ..}, {'id': 3,..}, {'id': 4, ..}]

✔️ values 매서드 안에 column 값을 넣으면 해당 column들만 key와 value로 반환한다.

>>> Account.objects.filter(id__lt=5).values('id', 'username')
# [{'id': 1, 'username': '장재원'}, {'id': 2, ..}, {'id': 3,..}, {'id': 4, ..}]

🤔 values_list 메서드 사용 방법

✔️ values_list는 key와 value가 아닌, tuple 형태의 column쌍으로 반환한다.

>>> Account.objects.filter(id__lt=5).values_list('id', 'username')
# [(1, '장재원'), (2, '사민준'), (3, '나혜진'), (4, '장영은')]

🤔 flat 옵션은 value만 list에 담아 가져올 수 있다.

✔️ flat은 False가 defualt이며, True값을 주면 된다.

Account.objects.filter(id__lt=5).values_list('username', flat=True).order_by('username')
# ['나혜진', '사민준', '자영은', '장재원']
profile
Keep Going, Keep Coding!

0개의 댓글