열렬히.뛰기

장고에서 DB 바꾸기

웹 프로그래밍 > Django > 장고에서 DB 바꾸기

처음 개발을 하다보면 마주하는 문제 중 하나가 바로 DB에 관한 것이다.

  1. 분명 처음 개발할 때는 단순한 파일 형태의 DB인 SQLite를 쓴다.
  2. 어느 순간부터 감당이 안 되서, 배포하기에 부적합해서 DB를 바꿔야 하는 순간이 온다.

이를 어떻게 해야 할까?

1. DB 가져오기

우선 기존 DB의 모든 정보를 빼와야 한다.

python
python manage.py dumpdata > xxx.json

이러면 xxx.json 으로 기존 DB에 담긴 모든 정보가 내려간다.

  • 특정 앱의 데이터만 덤프할때
python
python manage.py dumpdata appname > xxx.json
  • 특정 데이터만 빼고 덤프할때
python
python manage.py dumpdata --exclude appname > xxx.json

2. 새로운 DB와 연결하기

프로젝트 디렉토리 > settings.py 로 가서 DB 관련 세팅을 바꾼다.

예전 DB가 SQLite인 경우 다음과 같이 작성되어 있다.

python
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

새 DB가 postgreSQL인 경우 다음과 같이 작성한다.

python
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'db',  # docker-compose에서 정의한 db 서비스 이름과 일치
        'PORT': '5432',
    }
}

3. 새로운 DB에 적용시키기

만약 도커로 새 DB와 장고를 실행시킨다면, 장고용 컨테이너 안으로 들어가야 한다.

이후 다음과 같은 명령어를 사용해 PostgreSQL에 필요한 모든 테이블을 생성한다.

python
python manage.py migrate

이후 json 파일을 새 데이터베이스에 적용시킨다.

python
python manage.py loaddata xxx.json