본문 바로가기

Software 공부/Software Web Knowledge

[Software][Knowledge][Django] QuerySet API

반응형

Query

  - DB에 정보를 요청하는것

  - 사용자 → query(질의) → (요청) 정보  DB → (응답) 결과 → 사용자

  - 데이터베이스의 데이터를 입력/조회/수정/삭제 등의 작업을 위한 데이터베이스에 대한 명령

  - 질의문 = Query = SQL


QuerySet

  - Query의 결과(DB에서 전달 받은 객체)의 목록

      Model class에서 만들어진 것을 객체라고 생각

  - Python Code → SQL (Mapping) → Queryset (자료형태)

  - Django ORM에서 발생한 자료형

  - 기본 자료구조가 아니라 데이터 변형이 필요하다.


API (Application Programming Interface)

비유

  - 사람이 자판기를 이용하기 위해서 동전이 필요하다

  - 이때 동전이 API

  - User가 Application을 Interface(상호 작용)하기 위한것

개념

  - 연결 인프라를 지속적으로 구축할 필요 없이 제품 및 서비스가 서로 커뮤니케이션할 수 있도록 도와주는 기능

  - 애플리케이션 소프트웨어 및 서비스를 통합하는 툴, 정의, 프로토콜의 세트

  - 내부용 API : 전용으로 지정

  - 파트너용 API : 특정 파트너와 공유하여 추가 제공

  - 공용 API : 혁신을 촉진하기 위해 API와 통신하는 애플리케이션을 개발하도록 지원

  - 공용 API = Open API

특징

  - (필요성) 모든 걸 새로 만들 필요가 없다.

      좋은 서비스를 가져와서 필요한 부분만 쓸 수 있다.

  - (한계) 제한된 정보만 확인 가능

      자세한 정보 등의 이유로 데이터 변형 등 작업이 자유롭지 않다.


QuerySet API

  - DB에 요청하기 위한 인터페이스

  - Django에 내장된 일반적인 데이터 관리 기능

  - Django QuerySet API 공식문서

https://docs.djangoproject.com/en/4.0/ref/models/querysets/

 

QuerySet API reference | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

새 QuerySet을 반환하는 메서드

  - filter()

      조회 결과 일치하는 객체 목록

  - exclude()

      조회 결과 일치하지 않는 객체 목록

  - order_by()

     정렬(오름차순, 내림차순)

  - select_related()

      쿼리를 실행할 때 추가 관련 객체 데이터를 선택하여 외래키 관계를 "따를" QuerySet을 반환

      하나의 더 복잡한 쿼리를 생성, 나중에 외래키를 사용할 때 데이터베이스 쿼리가 필요하지 않다는 것을 의미

     성능 향상 장치

  - prefetch_related()

      지정된 QuerySet각 조회에 대한 관련 객체를 단일 일괄 처리에서 자동으로 검색

  - raw()

      원시 SQL 쿼리를 가져와 실행, django.db.models.query.RawQuerySet인스턴스를 반환

QuerySet을 반환하지 않는 메서드

  - get()

      설명된 형식으로 지정된 조회 매개변수와 일치하는 객체를 반환

      기본 키 또는 고유 제약 조건의 필드와 같이 고유하게 보장되는 조회를 사용해야 함

  - create()

      객체를 생성하고 한 번에 모두 저장하는 편리한 방법

  - count()

      QuerySet과 일치하는 데이터베이스의 개체 수를 나타내는 정수를 반환

  - first()

      QuerySet와 일치하는 첫 번째 개체를 반환하거나 일치하는 개체가 없으면 None을 반환

      QuerySet에 정의된 순서가 없으면 쿼리 세트는 기본 키에 의해 자동으로 순서가 지정

      order_by()와의 상호 작용에 설명된 대로 집계 결과에 영향을 줄 수 있음

  - last()

      first()처럼 작동하지만 쿼리 세트의 마지막 개체를 반환


 

반응형