기존 디비를 장고로 Migration 하기

2017. 1. 9. 15:11Dev/Django

반응형

기존 DB를 장고로 마이그레이션하는 방법은 inspectdb 라는 명령어로 실행한다.

$ python manage.py inspectdb

위의 명령은 콘솔에 마이그레이션된 정보를 출력해준다. 긁어다가 사용할 수도 있지만 파일로 저장할 수도 있다.

$ python manage.py inspectdb > model.py

model.py를 프로젝트 루트에 만들어 준다.

$ python manage.py inspectdb > blog/model.py

프로젝트루트/blog/model.py 를 만들어준다.

기존에 있는 model.py가 지워지고 새로 생성되니 되도록 기존파일을 덮어쓰지 않도록 주의해야 한다.


만약 multiple database 환경으로 사용하고 있다면 setting.py는 다음과 같을 것이다.

DATABASES = {
    'default': {
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.sqlite3',
        },
    'mysqldb': {
        'NAME': 'second',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'username',
        'PASSWORD': '123',
    }
}

멀티플 디비 환경일 경우 다음과 같이 실행한다. database를 명시하지 않으면 default 디비환경으로 접속한다.

$ python manage.py inspectdb --database=mysqldb

에러가 다음과 같을 경우 mysql 모듈을 설치해야 한다.

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'


mysql 모듈 설치(본인은 virtualenv 환경에서 설치. 설치환경마다 다를 수 있으므로 확인필요)

$ pip install mysqlclient


데이터베이스 명시 models.py 파일 생성 명령어

$ python manage.py inspectdb --database=mysqldb > models.py


반응형

'Dev > Django' 카테고리의 다른 글

Django ajax 처리 하기 - select  (0) 2017.01.10
Django 디버깅 툴  (0) 2017.01.10
django mysql date_format 에러  (0) 2017.01.02
장고 개념 잡기  (0) 2017.01.01
AWS EC2 Django 서버 계속 실행시키기  (0) 2017.01.01