프로그래밍

django chap3-1 모델과 데이터베이스

freenomad 2022. 1. 10. 22:11
반응형

django에서 사용 가능한 데이터베이스에는 MySQL, PostgreSQL, SQLite가 있다.

MySQL, PostgreSQL는 서버 타입의 데이터베이스이며 전용 프로그램을 가동시켜 웹서버와 데이터베이스 서버 간에 처리를 주고받는다. SQLite는 데이터베이스 파일에 직접 접근하는 엔진타입이라고 한다. 사이즈가 작기 때문에 스마트폰에서 사용된다.

 

Python에는 SQLite가 표준라이브러리로 들어있다.

django에서도 SQLite로 충분하다.

 

데이터베이스 설정 확인

settings.py파일안에 DATABASES변수가 존재하는데 데이터베이스 정보를 확인할 수 있다.

ENGINE은 데이터베이스의 클래스를 적어놓는다.

NAME은 이용하고자하는 데이터베이스의 이름을 적는다.

os.path.join은 첫 번째 인수와 두 번째 인수를 결합하여 패스를 지정해준다.

 

MySQL 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 데이터베이스 이름,
        'USER' : 사용자이름,
        'PASSWORD' : 비밀번호,
        'HOST' : 호스트이름,
        'PORT' : '3306',
    }
}

 

PostgreSQL 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 데이터베이스 이름,
        'USER' : 사용자이름,
        'PASSWORD' : 비밀번호,
        'HOST' : 호스트이름,
        'PORT' : '5432',
    }
}

 

모델 작성

모델은 '테이블의 정의'라고 생각하면 된다.

테이블을 추가할 때에는 hello/models.py을 수정한다.

from django.db import models
from django.db.models.fields import CharField

# Create your models here.
class Friend(models.Model):
    name = models.CharField(max_length=100)
    mail = models.EmailField(max_length=200)
    gender = models.BooleanField()
    age = models.IntegerField(default=0)
    birthday = models.DateField()
    
    def __str__(self):
        return '<Friend:id=' + str(self.id) + ', ' + self.name + '(' + str(self.age) + ')>'

__str__는 텍스트 값을 반환해줌. 템플렛에서는 텍스트를 {{}}로 표현 가능한데 여기에 출력하고 싶은 값을 __str__을 사용하여 편집이 가능하다.

 

 

마이그레이션

데이터베이스의 이행을 실행해주는 기능. 필요한 테이블을 작성하거나 이행 가능하도록 해주는 것이 마이그레이션.

 

마이그레이션을 실행하기 위해선 커맨드프롬프트를 열어야 한다. VS에디터를 사용하는 경우엔 터미널을 열어준다.

python manage.py makemigrations hello

hello의 위치에는 어플리케이션이름을 적으면 된다.

이를 실행하면 작성한 모델을 기반으로 마이그레이션 파일을 작성한다.

 

마이그레이션 실행

python manage.py migrate

터미널에서 위를 실행.

 

마이그레이션 파일 확인

hello밑에 migration폴더가 생성된 것을 확인할 수 있다. '0001_initial.py'라는 파일이 생성되었고 그 파일을 열어보면 아래의 내용을 확인할 수 있다.

# Generated by Django 3.2.9 on 2022-01-10 13:04

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Friend',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('mail', models.EmailField(max_length=200)),
                ('gender', models.BooleanField()),
                ('age', models.IntegerField(default=0)),
                ('birthday', models.DateField()),
            ],
        ),
    ]
반응형

'프로그래밍' 카테고리의 다른 글

django 데이터베이스 에러  (0) 2022.02.13
django chap3-2 데이터베이스 관리툴  (0) 2022.01.10
django chap2-9 여러가지 필드  (0) 2022.01.09
django chap2-8 Form클래스  (0) 2022.01.09
django chap2-7 form송신  (0) 2022.01.09