Django에서 데이터베이스 설정하기 (settings.py에서 DATABASES 설정)
Django는 강력한 ORM(Object-Relational Mapping) 기능을 제공하여 다양한 데이터베이스를 쉽게 연동할 수 있도록 지원합니다. 이 글에서는 Django 프로젝트에서 settings.py 파일을 이용하여 데이터베이스를 설정하는 방법을 설명하겠습니다.
1. Django에서 지원하는 데이터베이스 엔진
Django는 기본적으로 여러 종류의 데이터베이스를 지원합니다. 아래는 주요 데이터베이스 엔진과 해당하는 ENGINE 값입니다.
| 데이터베이스 | ENGINE 값 |
|---|---|
| SQLite | django.db.backends.sqlite3 |
| PostgreSQL | django.db.backends.postgresql |
| MySQL | django.db.backends.mysql |
| MariaDB | django.db.backends.mysql |
| Oracle | django.db.backends.oracle |
Django는 기본적으로 SQLite를 사용하도록 설정되어 있습니다. 하지만 PostgreSQL, MySQL 등의 데이터베이스도 쉽게 설정할 수 있습니다.
2. 기본 SQLite 설정
Django 프로젝트를 생성하면 기본적으로 SQLite 데이터베이스 설정이 포함되어 있습니다. 기본적인 settings.py 파일의 DATABASES 설정은 다음과 같습니다:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
SQLite는 가벼운 파일 기반 데이터베이스로, 소규모 프로젝트나 테스트 환경에서 유용하게 사용할 수 있습니다. 하지만 대규모 프로젝트에서는 PostgreSQL이나 MySQL을 사용하는 것이 좋습니다.
3. PostgreSQL 설정
PostgreSQL은 강력한 기능을 제공하는 관계형 데이터베이스로, Django에서도 많이 사용됩니다. PostgreSQL을 사용하려면 psycopg2 패키지를 설치해야 합니다:
pip install psycopg2-binary
이후 settings.py에서 다음과 같이 설정할 수 있습니다:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost', # 원격 서버의 경우 해당 주소 입력
'PORT': '5432', # PostgreSQL 기본 포트
}
}
4. MySQL 설정
MySQL을 사용하려면 mysqlclient 패키지를 설치해야 합니다:
pip install mysqlclient
settings.py에서 다음과 같이 설정합니다:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost', # MySQL 서버 주소
'PORT': '3306', # MySQL 기본 포트
}
}
5. 환경 변수를 사용한 데이터베이스 설정
보안상의 이유로 데이터베이스 비밀번호와 같은 중요한 정보를 settings.py에 직접 작성하는 것은 좋지 않습니다. 대신 환경 변수를 사용하는 것이 권장됩니다.
예를 들어, os 모듈을 활용하여 환경 변수에서 값을 불러올 수 있습니다:
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('DB_NAME', 'mydatabase'),
'USER': os.getenv('DB_USER', 'myuser'),
'PASSWORD': os.getenv('DB_PASSWORD', 'mypassword'),
'HOST': os.getenv('DB_HOST', 'localhost'),
'PORT': os.getenv('DB_PORT', '5432'),
}
}
환경 변수 설정은 .env 파일이나 운영체제의 환경 변수 설정을 통해 할 수 있습니다.
6. 여러 개의 데이터베이스 사용하기
Django에서는 다중 데이터베이스를 사용할 수도 있습니다. 예를 들어, PostgreSQL과 MySQL을 동시에 사용할 경우 settings.py에서 다음과 같이 설정할 수 있습니다:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'default_db',
'USER': 'default_user',
'PASSWORD': 'default_password',
'HOST': 'localhost',
'PORT': '5432',
},
'mysql_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysql_database',
'USER': 'mysql_user',
'PASSWORD': 'mysql_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
각 데이터베이스에 대해 Django의 using 매개변수를 활용하여 특정 데이터베이스를 선택할 수 있습니다.
from myapp.models import MyModel
# 기본 데이터베이스 사용
MyModel.objects.create(name="Default DB")
# MySQL 데이터베이스 사용
MyModel.objects.using('mysql_db').create(name="MySQL DB")
7. 마이그레이션 적용하기
데이터베이스 설정 후 Django의 migrate 명령어를 실행하여 데이터베이스 테이블을 생성해야 합니다.
python manage.py migrate
이 명령어를 실행하면 Django의 기본 앱과 사용자 정의 모델이 데이터베이스에 반영됩니다.
8. 데이터베이스 연결 테스트하기
Django가 데이터베이스와 정상적으로 연결되었는지 확인하려면 다음 명령어를 사용할 수 있습니다:
python manage.py dbshell
SQLite를 사용하는 경우, 별도의 추가 설정 없이 실행되며, PostgreSQL이나 MySQL을 사용하는 경우 해당 데이터베이스의 CLI로 접근할 수 있습니다.
또한, Django의 check 명령어를 통해 설정이 올바른지 확인할 수도 있습니다:
python manage.py check
결론
이 글에서는 Django에서 데이터베이스를 설정하는 방법에 대해 설명하였습니다. 기본 SQLite 설정부터 PostgreSQL 및 MySQL 설정, 환경 변수를 이용한 보안 강화, 다중 데이터베이스 사용법까지 살펴보았습니다. 데이터베이스 설정을 올바르게 구성하는 것은 Django 프로젝트의 성능과 확장성을 결정짓는 중요한 요소이므로, 프로젝트의 요구 사항에 맞는 적절한 설정을 적용하시길 바랍니다.
'Python > Django' 카테고리의 다른 글
| Django ORM 기본 쿼리셋 사용법 (filter(), get(), all() 등) (0) | 2025.11.01 |
|---|---|
| Django 모델(Model) 정의 및 마이그레이션 이해하기 (0) | 2025.10.31 |
| Django ORM(Object-Relational Mapping) 개념 및 사용법 (0) | 2025.10.29 |
| Django Template 엔진 활용법 (0) | 2025.10.28 |
| Django의 View와 HttpResponse 기본 사용법 (0) | 2025.10.27 |