Django 프로젝트의 외부 데이터베이스(MySQL, PostgreSQL) 연동 및 설정 방법

Django는 기본적으로 SQLite를 데이터베이스로 사용하도록 설정되어 있지만, 실제 서비스 환경이나 대규모 데이터 처리를 위해서는 MySQL 또는 PostgreSQL과 같은 강력한 관계형 데이터베이스 관리 시스템(RDBMS)을 연동해야 합니다. 각 데이터베이스별 드라이버 설치부터 Django 설정 및 마이그레이션 과정을 설명합니다.

1. MySQL 데이터베이스 구성

MySQL 드라이버 설치

Django에서 MySQL 엔진을 사용하기 위해서는 mysqlclient 라이브러리가 필요합니다. 이 라이브러리는 C로 작성되어 빠른 속도와 높은 호환성을 제공합니다.

pip install mysqlclient

데이터베이스 및 사용자 생성

MySQL 서버에 접속하여 프로젝트에서 사용할 데이터베이스를 생성하고 권한을 부여합니다. 이모지 등 4바이트 문자를 지원하기 위해 utf8mb4 인코딩 설정을 권장합니다.

-- 데이터베이스 생성
CREATE DATABASE app_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 사용자 생성 및 권한 부여
CREATE USER 'db_admin'@'localhost' IDENTIFIED BY 'complex_password';
GRANT ALL PRIVILEGES ON app_db_name.* TO 'db_admin'@'localhost';
FLUSH PRIVILEGES;

Django settings.py 설정

프로젝트 설정 파일에서 DATABASES 항목을 다음과 같이 수정합니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'app_db_name',
        'USER': 'db_admin',
        'PASSWORD': 'complex_password',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

2. PostgreSQL 데이터베이스 구성

PostgreSQL 드라이버 설치

PostgreSQL 연동을 위해 psycopg2 라이브러리가 필요합니다. 일반적으로 컴파일된 바이너리 버전인 psycopg2-binary를 설치하여 간편하게 구축할 수 있습니다.

pip install psycopg2-binary

데이터베이스 스키마 생성

명령행 도구(psql) 또는 GUI 도구를 사용하여 데이터베이스 환경을 준비합니다.

CREATE DATABASE pg_service_db;
CREATE USER pg_manager WITH PASSWORD 'secure_pass_123';
ALTER ROLE pg_manager SET client_encoding TO 'utf8';
ALTER ROLE pg_manager SET default_transaction_isolation TO 'read committed';
ALTER ROLE pg_manager SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE pg_service_db TO pg_manager;

Django settings.py 설정

PostgreSQL의 엔진 경로와 연결 정보를 입력합니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'pg_service_db',
        'USER': 'pg_manager',
        'PASSWORD': 'secure_pass_123',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

3. 마이그레이션 실행 및 연결 확인

데이터베이스 설정이 완료되면 Django의 모델 정보를 데이터베이스 스키마로 동기화해야 합니다. 다음 명령어를 순차적으로 실행합니다.

# 모델 변경 사항 탐지 및 마이그레이션 파일 생성
python manage.py makemigrations

# 데이터베이스에 실제 테이블 생성
python manage.py migrate

연결 상태 테스트

설정이 올바르게 되었는지 확인하기 위해 Django 셸을 이용해 데이터베이스 연결을 시도해 볼 수 있습니다.

python manage.py shell
>>> from django.db import connection
>>> cursor = connection.cursor()
>>> print(connection.ensure_connection()) # None이 출력되면 연결 성공

4. 보안 및 운영 팁

  • 환경 변수 활용: 데이터베이스 비밀번호와 같은 민감 정보는 settings.py에 직접 작성하지 말고 os.environ 또는 python-dotenv 라이브러리를 사용하여 환경 변수로 관리하십시오.
  • 문자 인코딩: MySQL을 사용한다면 반드시 utf8mb4를 사용하여 다국어 지원 및 특수 문자 저장 문제를 방지해야 합니다.
  • 포트 개방: 외부 데이터베이스 서버를 사용하는 경우 방화벽 설정에서 MySQL(3306) 또는 PostgreSQL(5432) 포트가 허용되어 있는지 확인해야 합니다.

태그: Django MySQL PostgreSQL database-configuration backend

7월 13일 22:50에 게시됨