처음 개발을 하다보면 마주하는 문제 중 하나가 바로 DB에 관한 것이다.
- 분명 처음 개발할 때는 단순한 파일 형태의 DB인 SQLite를 쓴다.
- 어느 순간부터 감당이 안 되서, 배포하기에 부적합해서 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