Django에서 manage.py를 사용하여 CLI에서 데이터베이스를 지우는 가장 쉬운 방법은 무엇입니까?
Django를 사용하여 MySQL로 웹 사이트를 구축하고 있습니다. 이제 배우면서 모델을 자주 변경해야하므로 모든 테이블이 지워지고 새 테이블이 생성되기를 원합니다.
그러나 syncdb
기존 테이블을 건드리지 마십시오. 이 문제를 처리하는 더 좋은 방법이 있습니까?
데이터에 관심이없는 경우 :
가장 좋은 방법은 데이터베이스를 삭제하고 syncdb
다시 실행하는 것입니다. 또는 다음을 실행할 수 있습니다.
Django> = 1.5의 경우
python manage.py flush
Django <1.5의 경우
python manage.py reset appname
( --no-input
명령 끝에 추가 하여 대화 형 프롬프트를 건너 뛸 수 있습니다.)
데이터에 관심이있는 경우 :
문서에서 :
syncdb는 아직 설치되지 않은 모델에 대해서만 테이블을 생성합니다. 설치 후 모델 클래스에 대한 변경 사항을 일치시키기 위해 ALTER TABLE 문을 실행하지 않습니다. 모델 클래스와 데이터베이스 스키마의 변경에는 종종 어떤 형태의 모호성이 포함되며, 이러한 경우 Django는 올바른 변경을 추측해야합니다. 프로세스에서 중요한 데이터가 손실 될 위험이 있습니다.
모델을 변경하고 일치하도록 데이터베이스 테이블을 변경하려면 sql 명령을 사용하여 새 SQL 구조를 표시하고 기존 테이블 스키마와 비교하여 변경 사항을 해결하십시오.
https://docs.djangoproject.com/en/dev/ref/django-admin/
참조 : FAQ- https ://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
사람들은 또한 South ( http://south.aeracode.org/docs/about.html#key-features )를 추천 하지만 시도하지는 않았습니다.
Django Extensions를 사용하여 다음을 실행합니다.
./manage.py reset_db
데이터베이스 테이블을 지우고 다음을 실행합니다.
./manage.py syncdb
그것들을 다시 만들 것입니다 (사우스는 당신에게 사물을 마이그레이션하도록 요청할 수 있습니다).
Django 문서 는 의도가 빈 DB에서 다시 시작하려는 경우 (OP의 의도 인 것 같음) 데이터베이스를 삭제하고 다시 만들고 migrate
(사용하는 대신) 다시 실행 한다고 명시 적으로 언급 한다고 생각 합니다 flush
.
빈 데이터베이스에서 시작하여 모든 마이그레이션을 다시 실행하려면 데이터베이스를 삭제하고 다시 만든 다음 대신 마이그레이션을 실행해야합니다.
따라서 OP의 경우 다음을 수행하면됩니다.
- MySQL에서 데이터베이스 삭제
- 데이터베이스 재생성
- 운영
python manage.py migrate
가장 빠름 (데이터를 포함한 모든 테이블 삭제 및 생성) :
./manage.py reset appname | ./manage.py dbshell
주의:
- Windows에서 올바르게 작동하지 않을 수 있습니다.
- DB에 오래된 테이블을 보관할 수 있습니다.
'Nice programing' 카테고리의 다른 글
LINQ to SQL의 TransactionScope와 Transaction (0) | 2020.10.16 |
---|---|
[L 배열 표기법-어디에서 왔습니까? (0) | 2020.10.16 |
Java 7은 방화벽이 켜져있는 경우 Windows Vista 및 7에서 FTP 전송을 차단합니다. (0) | 2020.10.16 |
Facebook 로그인에 대해 앱이 잘못 구성됨 : Android Facebook 통합 문제 (0) | 2020.10.16 |
ASP.NET C #에서 이메일을 보내는 방법 (0) | 2020.10.16 |