같은 작업을 하더라도 , 보다 적은 수의 SQL , 보다 높은 성능의 SQL
직접 SQL을 만들어 내기도 하지만 , ORM(Object-relational mappting) 을 통해 SQL 을 생성/실행하기도 한다.
하지만 ORM 을 쓰더라도 , 내가 작성한 ORM 코드를 통해 어떤 SQL 이 실행 되고 있는 지 파악 을 하고 이를 최적화 할 수 있어야 한다 .
그러기 위해서는 SQL 문을 알 필요가 있고 , 몇번 query 가 되는지 알아야할 필요성이 있다 .
-> django-debug-toolbar 활용
아니면 python manage.py shell 로 들어가서
작성후에
query 를 보는방법 이 있다 .
>>> from blog1.models import *
>>> test = Post.objects.all()
>>> test
<QuerySet [<Post: Post object (1)>, <Post: Post object (2)>]>
>>> print(test.query)
SELECT "blog1_post"."id", "blog1_post"."title", "blog1_post"."content", "blog1_post"."create_at", "blog1_post"."update_at" FROM "blog1_post"
이런식으로 확인이 가능하다 .
from django.db import models
class Post(models.Model):
title = models.CharField(max_length = 100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeFiled(auto_now=True)
장고 모델을 통해 , 데이터베이스 형상 관리 할 경우
python manage.py makemigrations
python manage.py migrate
models 에서 작성했던 class name 을 복수로 지정하면 된다.
class Post(models.Modle):
title = models....
....
class Meta:
db_table = 'posts'
참고자료
https://docs.djangoproject.com/ko/3.0/ref/models/options/#db-table
any_field = models.BooleanField(default=True)