2024. 3. 29. 10:00ㆍWeb, Django, DB
- ORM
Object - Relational - Mapping
객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 기술
- ORM의 역할
사용하는 언어가 달라서 소통이 불가한 문제를 해결
일종의 통역 역할로, 쟝고에 내장된 ORM이 중간에서 언어를 해석해준다.
- QuerySet API
ORM에서 데이터를 검색, 필터링, 정렬, 그룹화 하는 데에 사용하는 도구
API를 사용하여 SQL이 아닌 Python 코드로 데이터를 처리한다.
결국 파이썬 코드로만 DB를 만질 수 있게 해주는 도구다.
- QuerySet API 구문
Model class . Manager . Queryset API
ex) Article.objects.all()
- Query
데이터베이스에 특정한 데이터를 보여 달라는 요청
쿼리문을 작성한다 = 원하는 데이터를 얻기 위해 데이터베이스에 요청을 보낼 코드를 작성한다.
파이썬으로 작성한 코드가 ORM에 의해 SQL로 변환되어 데이터베이스에 전달되며, 데이터베이스의 응답 데이터를 ORM이 QuerySet이라는 자료 형태로 변환하여 전달해준다.
- QuerySet
데이터 베이스에게서 전달 받은 객체 목록 (데이터 모음) → 순회가 가능한 데이터로써 1개 이상의 데이터를 불러와 사용할 수 있다.
순회가 가능 ⇒ 반복 가능 (for 문)
Django ORM을 통해 만들어진 자료형
단, 데이터베이스가 단일한 객체를 반환할 때는 QuerySet 이 아니라 모델(class)의 인스턴스로 반환된다.
⇒ QuerySet API 는 파이썬의 모델 클래스와 인스턴스를 활용하여 DB의 데이터를 저장, 조회, 수정, 삭제하는 것을 말한다.
- Django shell
Django 환경 안에서 실행되는 python shell
입력하는 QuerySet API 구문이 Django 프로젝트에 영향을 미친다.
실행 코드 = ‘ python manage.py shell_plus ’
- save( )
객체를 데이터베이스에 저장하는 메서드
- 조회 메서드
전체 데이터(QuerySets) 조회 ⇒ all( ) , filter( )
vs
단일 데이터 조회 ⇒ get( )
- all ( ) ⇒ 전체 데이터 조회
- filter( ) ⇒ 특정 조건 데이터 조회
- get ( ) ⇒ 단일 데이터 조회
get은 객체를 찾을 수 없거나 둘 이상의 객체를 찾으면 예외가 발생하므로 primary key와 같은 고유성을 보장하는 값을 조회하며 사용해야 한다.
- Field lookups
특정 레코드에 대한 조건을 설정하는 방법
QuerySet 메서드 filter( ), exclude( ), get ( ) 에 대한 키워드 인자로 지정한다.
- ORM, QuerySet API를 사용하는 이유
데이터베이스 쿼리를 추상화하여 개발자가 데이터베이스와 직접 상호작용하지 않아도 되도록 한다.
그리하여 데이터베이스와의 결합도를 낮추고 개발자가 더욱 직관적이고 생산적으로 개발할 수 있도록 돕는다.
'Web, Django, DB' 카테고리의 다른 글
Django : Form (0) | 2024.04.01 |
---|---|
Django : ORM with View (0) | 2024.03.31 |
Django : Model (0) | 2024.03.20 |
Django : Templates & URLs (1) | 2024.03.14 |
Django & Design pattern (1) | 2024.03.12 |