Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코린이블로그2일차 #알고리즘공부 #C언어
- Django EC2
- 코린이블로그17일차 #알고리즘공부 #C언어
- 폰노이만의 구조
- 폰노이만 아키텍쳐
- 코린이블로그9일차 #알고리즘공부 #C언어
- 대전 팔레드오페라 후기
- 대전 피로연장 넉넉한 웨딩홀
- 2주차
- codestates
- 대전 웨딩홀 추천
- 팔레드오페라 웨딩홀 계약 후기
- Linux Timezone
- Von Neumann Architecture
- 웅장한 웨딩홀
- 1주차
- 코린이블로그4일차 #알고리즘공부 #C언어
- 오블완
- 파이썬
- EC2 MySQL
- CLI
- 코린이블로그8일차 #알고리즘공부 #C언어
- Django EC2 gunicorn nginx
- 대전 웨딩홀 가격
- 대전 웨딩홀 비교
- 코드스테이츠
- 티스토리챌린지
- AIBootcamp
- AI부트캠프
- 팔레드오페라 웨딩홀 후기
Archives
- Today
- Total
찰리의 놀이터
[Django] 쿼리셋(QuerySet) 객체별 접근 방식 본문
Queryset이란?
ORM으로 연결된 DB에서 전달받은 리스트 형태의 객체입니다.
DB에서는 row(행)에 해당하는 값이 넘어옵니다.
Python으로 작성한 코드가 SQL로 매핑되어 Queryset이라는 자료의 형태로 값이 넘어옵니다.
하위 코드들은 DB에 저장된 모든 객체를 불러오지만 실제로 DB에 query가 이루어지진 않습니다.
"왜 실제 DB에 쿼리가 적용되지 않는거죠?"
Queryset의 lazy한 특성 때문인데, 실제로 데이터를 가져오는 행위(fetch)를 실행하려면 QuerySet을 iterate 시켜야합니다.
즉, 반복문을 통해 print로 출력을 하는 식으로 진행해야 적용이 된다는 뜻입니다.
for board in board_list:
print(board.username)
객체별 접근방식
Django의 클래스 내부에서 정의하는 속성은 DB의 Column에 해당하고, 각 속성에 부여되는 값은 Row에 해당합니다.
QuerySet 내부의 객체에 접근할 때, 값(value)에 접근하는지, 속성(attribute)에 접근하는지에 따라 접근 방식에 차이가 있습니다.
ClassName.objects.values()
.values()
로 Dictionary의 key/value에 접근이 가능합니다.QuerySet()
은 리스트, 객체는 Dictionary 형태입니다. 따라서<variable_name>[index]['key']
의 방식으로 value 값에 적응이 가능합니다.
ClassName.objects.get()
get()
은 하나의 Dictionary 요소를 반환합니다.필드명=조건값
을 입력할 경우 해당 조건에 맞는 데이터를 불러옵니다.
- 해당 조건의 요소가 존재하지 않은 경우
DoesNotExist
, 여러 개가 존재하는 경우MultipleObjectsReturned
에러가 발생합니다. - 하나의 객체가 반환되기 때문에 dot notation으로 접근이 가능합니다.
<variable_name>.name
ClassName.objects.filter()
filter()
는 주어진 파라미터에 따라 쿼리 결과를 필터링하여 리스트로 반환합니다.필드명=조건값
이 들어가며 2개 이상의 조건을 넣을 경우, AND 연산이 수행됩니다.- OR 연산으로 두 조건을 통해 쿼리 결과를 받고 싶으시다면 Q를 사용하면 됩니다.
from django.db.models import Q
Item.objects.filter(Q(title="제목") | Q(content="내용"))
ClassName.objects.all()
all()
은 QuerySet안의 모든 객체를 리스트 형태로 반환합니다.
'DataBase' 카테고리의 다른 글
[DB] CAP Theorem(캡 정리) (0) | 2023.03.13 |
---|---|
[DB] 열 기반 데이터베이스 vs 행 기반 데이터베이스 (0) | 2023.02.26 |
[DB] 데이터베이스 기본 (0) | 2023.02.22 |