Django Data Sheet 변경 내용
<Django 콘텐츠 관리 시스템 개발(4일차)
Django 백그라운드
우리가 데이터베이스를 설계할 때 초기에 설계를 한 후에 후기에 미비한 것을 발견할 수 있다. 데이터 표를 변경해야 할 때 이 절의 지식을 사용해야 한다.
Django 1.7.x 및 이후 버전:
Django 1.7.x 및 이후 버전은 South 기능을 통합하여 모델을 수정합니다.py 이후 실행:
1
2
python manage.py makemigrations
python manage.py migrate
이 두 줄의 명령은 우리 모델스에 대한 것이다.py검측을 진행하여 변경이 필요한 것을 자동으로 발견하여 데이터베이스에 응용한다.
Django 1.6.x 및 이전:
Django 프로젝트를 쓴 학생은 반드시 이 문제에 부딪힐 것이다.
Django 1.6 및 이전 버전에서 모델을 바꾸는 것을 발견하면 어떻게 합니까?
모델 수정했습니다.py 이후 실행:
1
python manage.py syncdb
이 말은 우리를 모델스에서만py에 새로 추가된 클래스는 상응하는 표를 만듭니다.
원래 있던, 현재 삭제된 클래스에 대해 Django는 데이터베이스에 이미 존재하는 관련 데이터 테이블을 삭제할지 물어봅니다.
원래 클래스에 필드를 추가하거나 삭제할 경우 다음 명령을 참조하십시오.
1
python manage.py sql appname
주어진 SQL 문장을 직접 데이터베이스에 가서 SQL을 실행합니다.그런데 이게 틀리기 쉬워요!
Django의 제3자 앱 South는 데이터베이스 테이블 구조의 자동 이전 작업을 전문적으로 하는 것이다. Jacob Kaplan-Moss는 조사를 한 적이 있는데 South가 가장 인기 있는 제3자 앱으로 꼽혔다.사실상 이것은 Django의 사실상 데이터베이스 테이블 이전 표준이 되었다. 많은 제3자 앱들이 South migrations 스크립트를 가지고 Django 1.7에 South 기능을 통합했다.
1, South 설치
1
(
sudo
) pip
install
South
2. 사용법
좋은 프로그램은 사용하기에 반드시 간단해야 한다. South는 그것의 취지와 마찬가지로 사용이 간단하다.모델이 만들어지고 테이블이 만들어진 응용 프로그램에 대한 간단한 몇 걸음만 하면 됩니다.
south를 settings에 추가합니다.py의 INSTALLAPPS
1
2
3
4
5
6
7
8
9
10
11
12
# Application definition
INSTALLED_APPS
=
(
'django.contrib.admin'
,
'django.contrib.auth'
,
'django.contrib.contenttypes'
,
'django.contrib.sessions'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'blog'
,
'south'
,
)
수정한 후에python 관리자를 실행합니다.py syncdb, Django에서 새 southmigrationhistory 테이블, 데이터 테이블 변경 (Migration) 의 역사 기록을 기록합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ python manage.py syncdb
Syncing...
Creating tables ...
Creating table south_migrationhistory
Installing custom SQL ...
Installing indexes ...
No fixtures found.
Synced:
> django.contrib.admin
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.messages
> django.contrib.staticfiles
> blog
> south
Not synced (use migrations):
이전에 만들어진 블로그 같은 앱을 South로 관리하려면:
1
$ python manage.py convert_to_south blog
블로그 폴더에migrations 디렉터리가 하나 더 있는 것을 발견할 수 있습니다. 그 안에 0001 이 있습니다.initial.py 파일.
주: 블로그 이 앱이 만들어지기 전에 관련 테이블을 만들었다면 아래에 있는 것처럼 South로 만들 수 있습니다.
1
python manage.py migrate blog --fake
이 표는 내가 이전에 이미 만들었다는 뜻이다. South로 이 창설 기록을 기록할 뿐, 다음migrate에서는 다시 창설할 필요가 없다.
원리는 바로 south 입니다.migrationhistory에 모델스가 기록되어 있습니다.py의 수정 역사는 다음에 다시 수정할 때 최근의 기록과 비교하여 무엇이 바뀌었는지 발견하고 해당하는 파일을 생성하여 최종적으로 해당하는 SQL로 원래의 데이터 테이블을 변경한다.
이어서 블루에 대해.models를 수정한 후 다음을 수행합니다.
1
$ python manage.py schemamigration blog --auto
South는 우리가 어떤 부분을 수정했는지 찾아내는 데 도움을 줄 것입니다. 만약에 새로 추가된 데이터 테이블이default 값을 주지 않았고,null=True를 설정하지 않았다면,south는 당신에게 질문을 할 것입니다. 새로 추가된column은 원래의 낡은 데이터가Null이 되지 않으면 값이 있어야 하기 때문입니다.순조롭게 진행되면migrations 폴더 아래에 0002 가 생성됩니다add_mobile_column.py, 그러나 이 단계는 데이터베이스 테이블을 진정으로 수정하지 않았습니다. 우리는python 관리자를 실행해야 합니다.py migrate :
1
2
3
4
5
6
$ python manage.py migrate
Running migrations
for
blog:
- Migrating forwards to 0002_add_mobile_column.
> blog:0002_add_mobile_column
- Loading initial data
for
blog.
No fixtures found.
이렇게 한 변경 사항은 데이터베이스에 기록되었다.
이전으로 복구
South의 장점은 바로 이전 버전으로 언제든지 복구할 수 있다는 것이다. 예를 들어 우리가 처음 버전으로 돌아가고 싶다는 것이다.
1
2
3
4
5
> python manage.py migrate blog 0001
- Soft matched migration 0001 to 0001_initial.
Running migrations
for
blog:
- Migrating backwards to just after 0001_initial.
이렇게 하면 된다. 데이터베이스는 이전으로 회복되어 네가 수동으로 변경하는 것보다 훨씬 편리하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.