Django를 사용하여 App 단위의 Migration을 Rollback으로 요약

3178 단어 djangotech

컨디션

  • Django: 2.2 ( 3.0 )
  • ↓ 한마디로 마이그레이션과 앱을 살펴보자.

    Django의 App은요.


    Django를 사용하면App 개념으로 프로젝트 내에 여러 개의 응용 프로그램을 만들어 개발한다.원래 꽁고의 앱은 뭘까요?이렇게 말하지만 공식적으로는 프로젝트와 앱이 완전히 친자관계라는 느낌으로 거론된다.
    Django 앱을 처음 만들어 봤어요.
    엔지니어링 및 어플리케이션
    프로젝트와 응용 프로그램은 어떤 차이가 있습니까?앱이란 웹 블로그 시스템, 공공 기록을 하는 데이터베이스, 소규모 투표 앱 등 어떤 웹 앱을 하는 것이다.프로젝트는 특정 사이트의 구성과 응용을 위한 소장품이다.프로젝트에 여러 응용 프로그램을 포함할 수 있습니다.응용 프로그램은 여러 항목에 존재할 수 있다
    예를 들어 user 같은 프로그램을 제작할 때 아래의 등급 구조의 디렉터리python manage.py startapp user를 잘라내면 자동으로 개발된다.
    user/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    
    응용 프로그램과 관련된 DB(표)를 처리하려면 상기 디렉터리models.py에 모델을 설치하고 python manage.py makemigrations user 명령을 두드리면 Migration 파일을 만들 수 있습니다.

    Migration 정보


    창설


    Migration은 디렉토리의 migrations/ 디렉토리에 생성됩니다.
    첫 번째 미그레이션은 보통0001_initial.py 등의 이름으로 만들어졌고, 이후{0001からインクリメント}_{マイグレーションの内容}.py 형태로 제작됐다.
    일례로 도잔고는 제작0001_initial.py 후 표만 만드는 미그레이션member을 만들어 이를 통해 python manage.py makemigrations user 파일을 만들었다.
    Django는 파일 이름0002_member.py에 대해 자동으로 정의합니다.여러 모델의 정의를 하나의 Migration으로 변경하면member의 느낌 연월일날짜와 시간에 파일 이름을 만듭니다. 새 표를 추가하려면 파일 이름에 추가 표 이름을 포함합니다.
    똑똑하네.

    응용 프로그램

    0002_auto_20200930_1200는 데이터베이스의 상태를 python manage.py migrate user 0001에 이르게 할 수 있다.
    뒤에 0001_***.py가 있으면migrations/디렉터리에 0001~0010의 Migration 파일이 적용되는 상태가 된다고 생각하기 쉽다.
    그나저나 뒤에 있는 숫자0010를 빼면 최신 미그레이션이 적용된다.
    참고로 이 운행이 어느 정도인지, Django와 연결된 데이터베이스에 관리된 표가 있는데 그곳에서 관리되고 있다.

    되돌아오다


    그럼 롤백은 어떻게 할까요?실제로 Django에는 python manage.py migrate user 이런 명령이 없다.여기도 사용python manage.py rollback 〜.
    django-admin과 관리자.py|Django 설명서|Django
    공식 홈페이지에는 이렇게 기술되어 있다.
    Brings the database schema to a state where the named migration is applied, but no later migrations in the same app are applied.
    일본어로 번역하면...
    지정한 이전을 데이터베이스 모드에 적용하여 같은 응용 프로그램 내의 이전을 더 이상 적용하지 않습니다.
    그러니까
    예를 들어 0010에 적용된 상태에서 위치를 바꾸려면migrate 이전 상태를 지정하면 Django는 데이터베이스를'0009의 Migration에 적용할 때까지, 그 다음(0010)의 Migration에 적용되지 않는 상태'로 변환합니다.이것이 바로 실제 롤백이다.
    그러면 어떻게 해야만 python manage.py migrate user 0009를 굴러갈 수 있습니까?그런 말이 있다.0001user의 첫 번째 Migration 파일로'이전 파일'이 없습니다.
    이 경우 0001_initial.pypython manage.py migrate user zero 같은 키워드를 추가할 수 있어 사용자 응용 프로그램의 Migration이 완전히 적용되지 않는다.

    총결산


    명령하다
    효과zero0001까지 Migration 적용, 0002 이후에는 적용되지 않음python manage.py user 0001사용자 응용 프로그램의 Migration을 최신으로 적용python manage.py user사용자 응용 프로그램의 Migration이 적용되지 않은 상태로 만들기

    좋은 웹페이지 즐겨찾기