데이터베이스와 Django queryset

BackEnd_Ash.log·2020년 3월 22일
0

django 와 react

목록 보기
3/4

데이터베이스의 종류

  • RDBMS ( 관계형 데이터베이스 관리 시스템 )
    PostgreSQL , MySQL , SQLite , MS-SQL , Oracle 등
  • NoSQL
    MongoDB , Cassandra , CouchDB , Google BigTable 등

데이터베이스에 쿼리하기 위한 언어

같은 작업을 하더라도 , 보다 적은 수의 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"

이런식으로 확인이 가능하다 .

Django model

  • 데이터베이스 테이블 과 파이썬 클래스 를 1:1 로 매핑
  • 모델 클래스명은 단수형으로 지정 ( 첫글자는 대문자로 한다 )
  • 매핑되는 모델 클래스는 DB 테이블 필드 내역이 일치해야한다.
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)

Django model 활용 순서

장고 모델을 통해 , 데이터베이스 형상 관리 할 경우

  • 모델 클래스 작성
  • 모델 클래스로부터 마이그레이션 파일생성 -> makemigrations 명령
  • 마이그레이션 파일을 데이터베이스에 적용 -> migrate 명령
  • 모델 활용
python manage.py makemigrations
python manage.py migrate

DB 테이블 명

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

Django DB

Boolean

    any_field = models.BooleanField(default=True)
profile
꾸준함이란 ... ?

0개의 댓글