Django = > ORM (QuerySet)

백승찬·2020년 11월 2일
0

django

목록 보기
5/11

Django ORM 이란?

ORM (Objects Relational Mapper)

  • 객체 지향적인 방법을 사용하여 데이터베이스의 데이터를 쉽게 조작 가능

ORM은 파이썬과 데이터베이스의 SQL 사이의 통역사

쿼리문이 없어도 Model Class을 통해서 객체를 만들고 이객체를 통해서 DB에 접근

ORM의 장점

  • 빠르고 불필요한 것들을 자동으로 처리

  • 선언문할당 종료같은 부수적인 코드가 줄고 객체에 대한 코드만 작성하니 가독성이 좋다

  • 유지 보수와 재사용성

ORM의 단점

  • ORM 라이브러리를 따로 공부가 필요

  • 규모가 크거나 복잡한 프로젝트는 sql이 더 효율적

  • SQL문을 추상적으로 구현하여, 복잡한 쿼리는 비효율적인 SQL 구문이 생성됨

QuerySet (쿼리셋)

  • 전달받은 모델의 객체 목록

쿼리셋은 데이터베이스의 여러 레코드를 나타낸다

from .models import Category
Category.objects.all()

>>> <QuerySet [<Category: 제목1>, <Category: 제목2>] >
  • objects => Model Manager

DBDjango Model 사이의 QueryOperation(질의 연산)의 인터페이스 역할

QuerySet Method

.all()

  • 테이블 데이터를 전부 갖고온다.
    해당 쿼리셋의 모든 요소를 반환한다.

.values()

  • 쿼리셋의 내용을 딕셔너리로 각 개체정보를 갖는 리스트 형태로 반환
#1
>>> Blog.objects.filter(name__startswith='Beatles')
<QuerySet [<Blog: Beatles Blog>]>

#2
>>> Blog.objects.filter(name__startswith='Beatles').values()
<QuerySet [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]>

.filter()

  • 특정 조건에 맞는 Row들을 갖고오기 위해서 사용되는 메소드

.get()

  • 하나의 Row만 갖고오기 위해서 사용되는 메서드

.get()은 쿼리셋이 아니라 모델 객체를 반환하는 메소드

.count()

  • 데이터의 갯수(Row의 수)를 세기 위해 사용되는 메서

0개의 댓글