Django : ORM

2024. 3. 29. 10:00Web, 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