36. TIL (Django 복습- 그래서 Query가 뭐야?)

dream.log·2021년 8월 15일
0

TIL

목록 보기
36/42
post-thumbnail

파이썬과 마찬가지로 장고 기초쌓기 -

장고를 사용하며 쿼리셋 형태를 자주 접하고, 사용하고 있다.
그런데 의미도 모른채 사용하고 있었던 것이 아닌가?

아무 생각없이 사용하던 용어들을 풀어서 의미를 확실히 알고 가보자!


🍀 Query란?

: 문의, 의문의 의미. 데이터베이스에 특정한 데이터를 보여달라는 클라이언트의 요청.

ex) 구글에 Query를 검색 => 데이터를 송출
Query 라는 데이터를 달라는 쿼리를 주어 서버가 데이터베이스에서 맞는 데이터를 찾아 보낸 것이다!

  • 쿼리문을 작성한다는 의미는?
    데이터베이스에서 원하는 정보를 가져오는 코드를 작성한다는 의미!

🍀 django의 ORM이란?

: 여러 종류의 데이터를 데이터베이스 종류와는 독립적인 형태로 객체화한다.
모델 클래스를 통해 객체를 만들고 객체를 통해 데이터베이스에 접근한다!

🍀 그럼 데이터베이스는 뭔데?

: 통합하여 관리하는 데이터의 집합체. 중복된 데이터를 없애고 자료를 구조화하여 효율적인 처리를 할 수 있도록 관리됨

  • DBMS = 데이터베이스 안에 있는 데이터를 관리하는 것

🍀 QuerySet이란?

: 장고의 ORM인 장고 모델을 sql문으로 만들어주는 주체.
objects를 사용하여 다수의 데이터를 가져오는 함수를 사용할 때 반환되는 객체이다!
전달받은 모델의 객체 목록. 즉 데이터베이스로부터 데이터를 읽고 필터를 사용하고 정렬할 수 있다.

🍀 get_object_or_404

view에서 try-except 예외처리 대신 사용할 수 있는 구문이다.
예외처리가 필요없다!

ex)

>>> from django.shortcuts import get_object_or_404
>>> get_object_or_404(Book, title="없는 책")

ObjectDoesNotExist : 모든 모델 객체에서 이용가능 (import 해야함)
DoesNotExist : 특정 모델에서만 이용가능

🍀 order_by()

객체 목록을 정렬해주는 함수이다.

Product.objects.order_by('created_at') : 객체 생성일 오름차순
Product.objects.order_by('-created_at') : 객체 생성일 역순

공부를 하는데 있어 구문 하나하나 파고들고 쪼개서 개념을 이해하는 것이 중요하다는 것을 프로젝트 하며 깨닫고, 기초가 튼튼해야 앞으로 더 나아갈 수 있다는 판단이 들었다.

조금이라도 의문이 들었던 개념들을 정리하며 공부해보았으니,
이제 Q객체와 annotate, aggregate를 학습해보자!


- 출처 : TCP.School(http://tcpschool.com/mysql/DB) (https://hengbokhan.tistory.com/133) (https://wayhome25.github.io/django/2017/07/25/tsd7-django-query-database/) (https://bodhi-sattva.tistory.com/99)
profile
한 걸음, 한 걸음 포기하지 않고 발전하는 Backend-developer 👩🏻‍💻 노션 페이지를 통한 취업 준비 기록과 회고를 진행하고 있습니다. 계획과 기록의 힘을 믿고, 실천하고자 합니다.

0개의 댓글