728x90

장고 4

[Django] ORM Eager Loading(select related & prefetch_related)

ORM QuerySet의 특징 포스트에 이어서 Eager Loading에 대해 알아보자. 💡 https://dev-jy.tistory.com/23 [Django] QuerySet?! 장고 쿼리셋의 특징 중 Lazy Loading, Caching, Eager Loading에 대해 알아보자. 🤔 Lazy Loading 먼저, ORM은 게으르다. 😴 from prod.models import Product product = Product.objects.fitler(name='제품A') pr.. dev-jy.tistory.com Django ORM은 기본적으로 Lazy Loading 전략을 택하기 때문에, 아래의 예시처럼 N+1문제가 발생할 수 있다. 🤬 from board.models import Board ..

🐍Python | Django 2022.05.15

[Django] QuerySet method

django의 쿼리셋에서 사용할 수 있는 메서드들에 대해 알아보자. SELECT all() 테이블 내의 모든 데이터를 조회하여, 쿼리셋 타입으로 반환해준다. Product.objects.all() # get() 하나의 데이터를 조회하기 위한 메서드이며, 주로 pk로 조회한다. 결과가 1건 이상인 경우 에러를 발생시키고, 객체 타입으로 반환된다. Product.objects.get(id=1) # filter() 특정 조건에 맞는 row들만 조회할 때 사용하고, 쿼리셋으로 반환된다. Product.objects.filter(Group_id = 1) # exclude() 특정 조건을 제외한 데이터만 조회하고 싶을 때 사용한다. 쿼리셋으로 반환된다. Product.objects.exclude(Group_id =..

🐍Python | Django 2022.05.12

[Django] QuerySet?!

장고 쿼리셋의 특징 중 Lazy Loading, Caching, Eager Loading에 대해 알아보자. 🤔 Lazy Loading 먼저, ORM은 게으르다. 😴 from prod.models import Product product = Product.objects.fitler(name='제품A') print(product) 위와 같은 코드를 작성한 후 실행해보면, 실제 DB hits는 몇 번 일어날까? 정답은 1번이다. filter 할 때는 DB hits가 일어나지 않고 마지막 'print(product)'에서 DB hits가 일어난다. 장고 ORM은 QuerySet이 evaluated 될 때까지, 실제로 DB에 접근해 쿼리를 실행하지 않는다. 그렇다면 QuerySet이 evaluated 되는 시점은..

🐍Python | Django 2022.05.12

[Django] Django MTV

장고는 MTV(Model - Template - View) 패턴을 기반으로 하는 프레임워크이다. MTV패턴이란 Model(데이터), Template(사용자 인터페이스), View(데이터 처리 로직)을 구분하여 한 요소가 다른 요소들에게 영향을 주지 않도록 설계한 방식이다. Model Model은 데이터 모델을 의미하며, 장고의 model 모듈을 이용하여 DB의 테이블과 일치하는 데이터 구조를 정의한다. 보통 하나의 모델은 하나의 테이블에 매핑되고, 클래스 내부의 attribute들은 DB 테이블의 필드를 나타낸다. 장고에서는 Django ORM이라 불리는 자체 ORM을 사용한다. ORM은 Objecte Relational Mapping의 약자로 SQL 언어를 사용하지 않고 DB작업을 가능하게 해 준다. ..

🐍Python | Django 2022.04.29
728x90