Django에서 MySQL 데이터베이스 설정하기
Django 프로젝트에서 MySQL 데이터베이스를 사용하려면, MySQL 커넥터를 설치하고 settings.py
파일에서 데이터베이스 설정을 변경해야 합니다. 이 글에서는 Django에서 MySQL을 설정하고 데이터베이스를 연결하는 방법을 설명합니다.
1. MySQL 커넥터 설치
Python에서 MySQL 서버와 통신할 수 있도록 MySQL 커넥터를 설치해야 합니다. 아래 명령어를 사용하여 설치합니다:
$ pip3 install mysqlclient
2. Django 데이터베이스 설정
Django 프로젝트의 설정 파일인 mysite/settings.py
를 열어보면, 기본적으로 SQLite가 설정되어 있습니다. 이를 MySQL로 변경하려면, DATABASES
설정을 아래와 같이 수정합니다:
# mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'testdjango', # 데이터베이스 이름
'USER': 'root', # MySQL 사용자 이름
'HOST': 'localhost', # MySQL 서버 주소
'PORT': '3306', # MySQL 포트 번호
}
}
3. TIMEZONE 설정
한국 시간대를 사용하려면, LANGUAGE_CODE
와 TIME_ZONE
을 다음과 같이 설정합니다:
# mysite/settings.py
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = False # DB에 TIME_ZONE을 반영하려면 False로 설정
4. 데이터베이스 체크 및 모델 생성
MySQL 데이터베이스에 있는 테이블을 자동으로 Django 모델로 생성하려면, 아래 명령어를 실행하여 해당 DB에 있는 테이블을 확인하고, 이를 Django 모델로 변환합니다:
$ python3 manage.py inspectdb
위 명령어를 실행하면, MySQL에 존재하는 테이블들을 모델로 변환하여 출력합니다. 예를 들어, Test1
테이블이 있다면 아래와 같은 모델이 생성됩니다:
from django.db import models
class Test1(models.Model):
name = models.CharField(max_length=20, blank=True, null=True)
id = models.CharField(primary_key=True, max_length=20)
age = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'test1'
생성된 모델을 polls/models.py
에 복사하여 붙여넣습니다.
5. 모델 활성화
모델을 프로젝트에서 활성화하려면, polls
앱을 프로젝트에 추가해야 합니다. polls/apps.py
에 존재하는 클래스를 INSTALLED_APPS
에 추가합니다:
# mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig', # polls 앱 추가
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
6. 모델 뷰와 URL 설정
모델을 뷰에서 사용할 수 있도록 polls/views.py
에 모델을 불러오는 코드를 추가하고, polls/urls.py
에 URL을 설정합니다:
# polls/views.py
from .models import Test1
def test_view(request):
items = Test1.objects.all() # Test1 테이블의 모든 객체를 불러오기
return render(request, 'index.html', {"items": items})
# polls/urls.py
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('items/', views.test_view), # /items URL 추가
]
7. 결과 확인
웹 브라우저에서 http://127.0.0.1:8000/polls/items/
에 접속하여 DB에서 가져온 데이터를 확인할 수 있습니다.