Twowix
Twowix World
Twowix
전체 방문자
135,800
오늘
37
어제
31
  • ALL (42)
    • Programing (20)
      • Logging... (6)
      • NodeJS (4)
      • Android (2)
      • DataBase (3)
      • Python (2)
      • Linux (3)
      • Server (0)
    • IT (15)
      • Review (10)
      • Information (5)
    • Think&Daily (7)
      • Bicycle (6)
      • Think (0)
      • Review (1)

인기 글

  • 개인 방송 스트리밍 플랫폼 비⋯
    2017.05.05
    개인 방송 스트리밍 플랫폼 비⋯
  • [MongoDB] 조건을 주어 find하⋯
    2016.09.06
    [MongoDB] 조건을 주어 find하⋯
  • [DB연동] nodejs 에서 mysql 사⋯
    2016.03.21
    [DB연동] nodejs 에서 mysql 사⋯

최근 글

  • 사내 비개발자들이 보는 개발자⋯
    2022.02.12
    사내 비개발자들이 보는 개발자⋯
  • 모두가 내 직군은 아니다. (무⋯
    2022.01.15
    모두가 내 직군은 아니다. (무⋯
  • [회고] 어느 덧 6년차가 넘어버⋯
    2022.01.13
    [회고] 어느 덧 6년차가 넘어버⋯
hELLO · Designed By 정상우.
Twowix

Twowix World

[Django] 이미 서비스 되고 있는 DB 연동
Programing/Python

[Django] 이미 서비스 되고 있는 DB 연동

2019. 11. 18. 21:24

프로젝트를 진행하다 보면, 항상 신규프로젝트만 하는 경우는 적다.

이미 진행되고 있는 서비스를 다른 기술 스택으로 이전을 하거나 혹은 신규 프로젝트여도 중간에 스택변경으로 인해서 DB연동을 옮길때가 있다.

일반적으로는 각 언어와 프레임워크에 맞게 드라이버 및 몇가지 설정 후 일이 진행 되게 된다.

하지만 Django로의 이전을 할 시에, Django의 강력한 ORM을 사용하려면 필수적으로 Model을 선언해 주어야한다.

(물론 ORM을 사용 안할 시에는 그냥 커넥션 맺으면되긴함)

 

 

방법은 사실 간단하다.

 

1. Django 프로젝트에서 inspectdb를 이용하면 저절로 이미 생성되어있는 DB가 models.py파일로 떨궈진다.

python manage.py inspectdb > models.py

명령어를 보면 알겠지만 가장 뒤에 models.py라는 파일로 떨궈준다.

필자는 모든 모델이 하나의 파일에서 관리하는게 꼴보기 싫어서 legacy_models.py 라고 떨군 후에 각 App에 맞게 정리를 한다. (필드별로 옵션들을 잘 수정해야 한다.)

하지만 이렇게 떨구고 사용을 하면 추 후 모델변경으로 인한 마이그레이트를 할때 억압이 올것이다.

왜냐하면 기본적으로 떨궛을때 managed=False 로 셋팅이 되어있기 때문이다.

 

2. 따라서 managed=False를 모두 True로 변경해준다.

그 후 마이그레이트는 필요가 없다. (이미 테이블은 존재하니까) 그럼 마이그레이션 관리는 어떻게하지?

 

3. 그래서 이미 존재하는것들은 마이그레이트가 됐다고 거짓부렁을 날리면된다.

python manage.py migrate --fake-initial

끝이다.

이 후에는 모델이 변경되거나 추가되거나 할때는 models.py에 작성한 후 항상 그랬듯이 makemigrations와 migrate를 하면 되겠다.

 

정리하자면

1. python manage.py inspectdb

2. 해당 모델 managed = False -> managed = True 로 변경

3. python manage.py migrate --fake-initial

4. 그 후 모델 변경 시 평소처럼 makemigrations, migrate

 

끝!

    'Programing/Python' 카테고리의 다른 글
    • [Django] runserver 로 실제 서버를 돌리면 안되는 이유-1 (런서버는 어떻게 동작하나??)
    Twowix
    Twowix
    Twowix 일지
    댓글쓰기
    1. 뚱땅요정
      2019.11.19 00:36
      잘보고갑니다!!
      수정/삭제댓글쓰기댓글보기
    다음 글
    [인테리어] 베스트슬립 M5 Q - 너무 만족스러운 매트리스
    이전 글
    [MongoDB] 백업과 리스토어
    • 이전
    • 1
    • ···
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • ···
    • 42
    • 다음

    티스토리툴바