[Django] migrations

Jin·2021년 9월 1일
0

django

목록 보기
3/14
post-thumbnail
post-custom-banner

migration 3단계

  1. models.py
  • model 변경사항 발생 시
  1. $ python manage.py makesmigrations
  • migrations 파일 생성
  1. $ python manage.py migrate
  • DB 반영 (모델과 DB의 동기화)

1. migrations

django가 model 생긴 변화를 DB에 반영하는 방법

1) makemigrations

  • model을 변경한 것에 기반한 새로운 마이그레이션(like 설계도) 만들때 사용
  • 추가 수정을 할때는 추가 모델 필드 작성후 makemigrations를 다시 진행
  • 추가시에는 아래와 같은 경고문(?)이 뜸

    간단한 해석 : 필드를 추가하려는데 기본값도 없네?
    1) 지금 여기서 기본값을 넣어
    2) 아니면 여기서 나가서 models.py에 기본값을 넣어.

여기서 그냥 원하는 선택 번호를 입력 해주면 된다. 아래는 1번을 입력했을시:

위에서 엔터를 눌렀을시, 아래와 같이 새로운파일(설계도)이 생성되고 필드가 추가가 됨.

새로 생성된 파일을 살펴보면,

dependencies를 볼 수 있는데, 아래 0001 파일을 이어 받으며 새로운 필드가 추가 되었다는 뜻이다.

(DB는 기본적으로 빈값을 허용하지 않는다)

  • 마지막으로 다시 migrate 진행.

2) migrate

  • makemigrations을 해준뒤 실행 해야함
  • 기본적으로 내장된 앱들의 설계도(settings.py - INSTALLED_APPS에 기본적으로 작성 되있던것들)
  • migrations을 db에 반영하기 위해 사용
  • 설계도를 실제 db에 반영하는 과정
  • 모델에서의 변경 사항들과 db의 스키마가 동기화를 이룸

< 생성된 db.sqlite파일 보는법>

  1. vsc 에서 sqlite extension 설치
  2. db.sqlite3에 우클릭 open database 클릭
  3. 좌측하단에 아래와 같이 생성 됨

3) sqlmigrate

  • 마이그레이션에 대한 SQL 구문을 보기 위해 사용
  • 마이그레이션이 SQL 문으로 어떻게 해석되어 동작할지 미리 확인

4) showmigrations

  • 프로젝트 전체의 마이그레이션 상태 확인하기 위해 사용
  • 마이그레이션 파일들이 migrate 됐는지 안됐는지 여부 확인 가능.
    X 되어있으면 완료 된거.

DateField's Options

1. auto_now _add

  • 최초 생성일자
  • django ORM이 최초 입력시에만 현재 날짜와 시간으로 갱신(테이블에 어떤 값을 최초로 넣을 때)

2. auto_now

  • 최종 수정 일자
  • django ORM이 save를 할 때 마다 날짜와 시간으로 갱신
profile
내가 다시 볼려고 작성하는 블로그
post-custom-banner

0개의 댓글