13. 데이터 베이스 - eungyukm/DjangoBase GitHub Wiki

데이터 베이스

  1. 데이터베이스 연동을 위한 라이브러리를 설치합니다.
pip install mysqlclient
  1. 데이터 베이스 연동을 위해 접속 정보를 설정합니다.
  • board_project/settings.py를 설정합니다.
  1. MySQL을 사용하기 위해서 아래와 같이 설정 합니다.
DATABASES = {
    'default': {
        # 데이터베이스 엔진 명. 그대로...
        'ENGINE': 'django.db.backends.mysql',
        # 데터이스 이름. 사전에 데터이스가 생성되어 있어야 한다.
        'NAME': 'board_db',
        # 접속 계정
        'USER' : 'root', 
        # 접속 비밀번호
        'PASSWORD' : 'eungyu1994', 
        # MySql이 설치된 컴퓨터 IP 혹은 도메인
        'HOST' : 'localhost',
        # 포트 번호 (기본 : 3306)
        'PORT' : '3306'
    }
}
  1. django model
    https://docs.djangoproject.com/en/4.0/topics/db/models/

  2. 사용자 정보 테이블(user_app/models.py)

from django.db import models

# Create your models here.
# 사용자 정보 테이블
class UserTable(models.Model) :
    # PK 컬럼(1부터 1씩 증가되는 값으로 저장됩니다.)
    user_idx = models.AutoField(primary_key=True)
    user_name = models.CharField(max_length=50)
    user_id = models.CharField(max_length=100, unique=True)
    user_pw = models.CharField(max_length=100)
  1. 게시판 정보 테이블
from django.db import models
from user_app.models import UserTable

# Create your models here.

# 게시판 정보 테이블
class BoardInfoTable(models.Model) : 
    board_info_idx = models.AutoField(primary_key=True)
    board_info_name = models.CharField(max_length=500)

# 게시글 정보 테이들
class ContentTable(models.Model) :
    content_idx = models.AutoField(primary_key=True)
    content_subject = models.CharField(max_length=500)
    content_text = models.TextField()
    content_file = models.CharField(max_length=500, null=True)
    # 외래키(UserTable의 PK 컬럼을 참조합니다.
    # 만약 참조하는 테이블의 PK 컬럼이 아닌 다른 컬럼을 참조하겠다면
    # related_name='컬럼명'을 설정해 줍니다.
    content_writer_idx = models.ForeignKey(UserTable, on_delete=models.CASCADE)
    # 외래키(BoardInfoTable의 PK 컬럼을 참조한다)
    content_board_idx = models.ForeignKey(BoardInfoTable, on_delete=models.CASCADE)
    content_date = models.DateTimeField()
  1. 마이그레이션 작업을 합니다.
eungyugim@eungyugim-ui-MacBookPro mini_project % python3 manage.py makemigrations
/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/django/core/management/commands/makemigrations.py:121: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (1049, "Unknown database 'board_db'")
  warnings.warn(
Migrations for 'user_app':
  user_app/migrations/0001_initial.py
    - Create model UserTable
Migrations for 'board_app':
  board_app/migrations/0001_initial.py
    - Create model BoardInfoTable
    - Create model ContentTable
  1. MySql에 데이터베이스를 생성합니다.(해야함)