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