Python/Django

[Django, DB] Migration 초기화 방법 (+window 자동화 code)

yubi5050 2022. 6. 5. 15:12

초기화 시기

  • Sqlite DB를 실수로 지워버렸을 때
  • 잦은 model 변경으로 migrations 꼬였을 때

 

방법

1. Database Server 삭제 (db.sqlite3, mysql, postgresql 등) 

2. 각 app들의 migrations/ 폴더 내의  __init__.py를 제외한 모든 파일 삭제 (중요!!)

3. 위 2. 가 진행되면 migrations 폴더와 __init__.py 만 폴더내에 남아 있어야 함. (없으면 진행안됨)

4. 다음 명령어 실행하면 정상적으로 돌아와있는 DB를 볼 수 있다.

python manage.py makemigrations
python manage.py migrate

 

자동화 코드 (window ver)

Project 폴더 밑에서 python init_db.py 실행

# init_db.py
import os
os.system('del /s "*.pyc')
os.system('del /s "000*.py')

 

자동화 코드 (mac, linux)

Project 폴더 밑에서 reset.sh 실행

#!/bin/bash - reset.sh

apps="app1 app2 app3"
for app in $apps
do
  echo "Delete-" $app
  find . -path "./$app/migrations/*.py" -not -name "__init__.py" -delete
done