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을 반환하는 메서드
- 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()처럼 작동하지만 쿼리 세트의 마지막 개체를 반환
'Software 공부 > Software Web Knowledge' 카테고리의 다른 글
[Software][Knowledge] Django (장고) (1) | 2023.01.05 |
---|---|
[Software][Knowledge] DB, DBMS, Table, SQL (0) | 2023.01.05 |
[Software][Knowledge] shell, 인터프리터 언어, 컴파일 언어, Django Shell 사용하기 (0) | 2023.01.05 |
[Software][Knowledge] Framework (프레임워크) (0) | 2023.01.05 |
[Software][Knowledge] 웹 (0) | 2023.01.05 |