본문 바로가기
Python/Django

Django - DB연결과 ORM(Object Relational Mapping)

by 코드뭉치 2023. 4. 4.

DB연결하기

# settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

DATABASES라는 정보를 가지고 있는 데이터베이스와 자동 연결

db.sqlite3이 만들어졌다면 제대로 한 것이다.

 

* VScode는 Extensions(Ctrl + shift + x)에서 SQLite Viewer를 설치해야 db.sqlite3 파일을 열어서 확인할 수 있다.

 


ORM???

Object Relational Mapping은 데이터 베이스를 하나의 객체(Object)덩어리로 보고, 데이터베이스를 SQL언어가 아닌 클래스로 표현하고 사용할 수 있게 해준다. DB언어라고 하면 흔하게 SQL언어라고 표현하는데, 이것은 파이썬으로 다룰 수 있게 해주는 것.

class myBakery():
	bread_type = ''
    bake_time = ''
    price = 0

이런 클래스 형태를 데이터베이스의 형태로 만들어서 사용

 

장고는 기본적으로 User모델을 제공한다.

모델을 직접만드는 법

모델을 만들기 전에 어떤 기능, 어떤 속성이 들어가면 좋을지 생각해보자.

from django.db import models

class UserModel(models.Model):
    class Meta:      # DB테이블의 이름을 지정해주는 정보, 데이터베이스에 정보를 넣어주는 역할
        db_table = "my_user"

    username = models.CharField(max_length=20, null=False)
    password = models.CharField(max_length=256, null=False)
    bio = models.CharField(max_length=256, default='')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 모델 필드의 종류 - 해당하는 곳 각각의 정보들이 어떤 형태로 db에 들어갈지 정해준다.

문자열 : CharField, TextField
날짜/시간: DateTimeField, DateField, TimeField
숫자 : IntegerField, FloatField
다른 테이블과 연관을 지어 줄 때 : ForeignKey

makemigrations와 migrate

# 외부 프로젝트명 디렉토리에서 Terminal로 입력!! 

python manage.py makemigrations
=> 데이터베이스 변경을 알려주는 명령어
=> 변경 내용을 migration파일로 만드는 명령어

python manage.py migrate
=> 변경된 데이터베이스를 반영해주는 명령어

migrate를 했다면 db.sqlite3파일에서 DB에 적용된 모델을 볼 수 있다.

댓글