티스토리 뷰

반응형

[ 이슈 ] 

 

장고의 로컬에서 기본적으로 SQLite3 를 씁니다. 

헤로쿠(기본이 PostgreSQL)에 배포한 후, 리얼에서도 로컬의 sqlite 파일을 그대로 쓰고 싶었는데

(로컬 데이터를 그대로 쓸 것이고 더이상 추가/수정할 것이 없는 간단 프로젝트여서!)

 

헤로쿠는 SQLite3 같이  file-based database 와 fit이 안맞다고 하고 쓸 수 있는 방법도 없는 것 같습니다.  (참고)

 

로컬에 있는 데이터를 리얼로 옮기는 게 목적이니까 

How to migrate Django from SQLite to PostgreSQL 를 보고 따라해줍니다. 

 

 

[1] 로컬 >  dump data 

 

로컬에서 이 명령어를 돌려서 dump.json을 만들어줍니다.  

로컬에 존재하고 있는 데이터를 dump.json 파일에 담아주는 명령어입니다. 

python manage.py dumpdata > dump.json

 

만약 파일 만들기 전에 콘솔에서 데이터를 미리 찍어보고 싶다면 

이 명령어를 실행시켜주면 됩니다. 

python manage.py dumpdata

 

그리고 추가된 dump.json 파일 을 푸쉬해줍니다. 

 

 

[2] 헤로쿠 > exclude contentype data

 

터미널에서 아래 명렁어로 쉘을 실행시켜준 다음 

heroku run python manage.py shell --app 앱이름

 

contentType 데이터를 지워주는 명령어를 돌립니다. 

>>> from django.contrib.contenttypes.models import ContentType
>>> ContentType.objects.all().delete()
>>> quit()

 

dump.json 을 열어보면 장고에 기본적으로 있는 데이터들도 들어있는데

3번 단계를 할 때 중복되지 않도록 지워주는 것입니다.

 

 

[3] 헤로쿠 >  loaddata

 

그리고 dump.json에 있는 data를 load 해줍니다. 

heroku run python manage.py loaddata dump.json  --app 앱이름

 

그럼 dump.json에 있는 데이터가 PostgreSQL에 잘들어온 것을 확인할 수 있습니다. 

그리고 dump.json 파일을 지워주면 되겠습니다! 

 

 

 

반응형
댓글