기존 DB - Django로 Migration하기
▼ MariaDB - Python - Django 관련 링크 ▼
2018/08/03 - [AI 이론과 개발의 혼재/Python] - Django - MariaDB 연동하기 (Windows)
2018/08/08 - [AI 이론과 개발의 혼재/Python] - MariaDB 외부에서 접속/접근 방법
2018/08/03 - [AI 이론과 개발의 혼재/Python] - Python. MySQL 기본 사용법(CRUD)
Django에서는 model.py에 DB 객체를 선언하여 테이블을 생성해주는데,
만약 기존 DB가 있을 경우에는 Django랑 연동을 못할까?
"가능하다"
기존 DB를 장고로 migration하는 방법에 대해서 알아보자.
1. migration할 대상 DB 정보 설정
Migration할 대상에 대한 DB정보를 setting.py에 적어준다. (지난번 포스팅에서 설정해줬지롱~ )
setting.py
DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'NAME': 'secupy', 'USER': 'root', 'PASSWORD': '1234', 'HOST': 'localhost', 'PORT': '3306' } }
2. 기존 DB migration 수행 - model.py 생성
inspectdb > '저장 하고자하는 위치' /models.py
필자는 저장하고자하는 위치를 application 이름으로 설정해서 했다.
$ python manage.py inspectdb > secupy_test/models.py
수행하고나면, 해당 폴더 밑에 model.py에 기존 DB에 있던 model object가 모두~ 자동으로 생성되어 있음을 확인 할 수 있다.
예) secupy_test/model.py
class Users(models.Model): user_id = models.CharField(db_column='USER_ID', primary_key=True, max_length=50) # Field name made lowercase. user_nm = models.CharField(db_column='USER_NM', max_length=200) # Field name made lowercase. tel_no = models.CharField(db_column='TEL_NO', max_length=50, blank=True, null=True) # Field name made lowercase. email = models.CharField(db_column='EMAIL', max_length=100, blank=True, null=True) # Field name made lowercase. compny_nm = models.CharField(db_column='COMPNY_NM', max_length=200, blank=True, null=True) # Field name made lowercase. dept_nm = models.CharField(db_column='DEPT_NM', max_length=200, blank=True, null=True) # Field name made lowercase. jdeg_nm = models.CharField(db_column='JDEG_NM', max_length=200, blank=True, null=True) # Field name made lowercase. working_site_nm = models.CharField(db_column='WORKING_SITE_NM', max_length=200, blank=True, null=True) # Field name made lowercase. reg_tm = models.DateTimeField(db_column='REG_TM') # Field name made lowercase. chg_tm = models.DateTimeField(db_column='CHG_TM') # Field name made lowercase. class Meta: managed = False db_table = 'users'
자동으로 model을 생성해주니~ 매우 기분이 좋은 것 :>
3. Django DB migration 수행
- Setting.py에 app 명 추가
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'secupy_test', ]
- makemigration 수행 > migration 수행
$ python manage.py makemigrations $ python manage.py migrate
'AI 이론과 개발의 혼재 > Python' 카테고리의 다른 글
Python - DB2 연동 (라이브러리 설치, CRUD 테스트) (0) | 2020.04.23 |
---|---|
Anaconda, TensorFlow 설치 (0) | 2020.01.29 |
MariaDB 외부에서 접속/접근 방법 (0) | 2018.08.08 |
Python. Json Schema Validator 구현 (0) | 2018.08.06 |
Django - MariaDB 연동하기 (Windows) (0) | 2018.08.03 |
댓글