Nice programing

Django에서 manage.py를 사용하여 CLI에서 데이터베이스를 지우는 가장 쉬운 방법은 무엇입니까?

nicepro 2020. 10. 16. 08:04
반응형

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의 경우 다음을 수행하면됩니다.

  1. MySQL에서 데이터베이스 삭제
  2. 데이터베이스 재생성
  3. 운영 python manage.py migrate

가장 빠름 (데이터를 포함한 모든 테이블 삭제 및 생성) :

./manage.py reset appname | ./manage.py dbshell

주의:

  • Windows에서 올바르게 작동하지 않을 수 있습니다.
  • DB에 오래된 테이블을 보관할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/6485106/what-is-the-easiest-way-to-clear-a-database-from-the-cli-with-manage-py-in-djang

반응형