source

manage를 사용하여 CLI에서 데이터베이스를 클리어하는 가장 쉬운 방법은 무엇입니까?장고 파이요?

factcode 2023. 1. 9. 21:12
반응형

manage를 사용하여 CLI에서 데이터베이스를 클리어하는 가장 쉬운 방법은 무엇입니까?장고 파이요?

MySQL로 웹사이트를 구축하기 위해 장고를 사용하고 있습니다.학습 중이기 때문에 모델을 자주 변경해야 하므로 모든 테이블을 지우고 새 테이블을 생성해야 합니다.

그렇지만syncdb기존 테이블은 건드리지 않습니다.이 문제를 해결할 더 좋은 방법이 없을까요?

데이터에 관심이 없는 경우:

가장 좋은 방법은 데이터베이스를 삭제하고 실행하는 것입니다.syncdb다시 한 번 또는 실행:

장고 > = 1.5의 경우

python manage.py flush

장고< 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-model

사람들은 남쪽(http://south.aeracode.org/docs/about.html#key-features)도 추천하지만 저는 먹어본 적이 없습니다.

Django Extensions 사용, 실행:

./manage.py reset_db

데이터베이스 테이블을 지운 후 다음을 실행합니다.

./manage.py syncdb

재작성합니다(남쪽에서는 이행이 요구될 수 있습니다).

Django docs는 (OP의 의도인 것처럼 보이는) 빈 DB에서 다시 시작하는 경우 데이터베이스를 삭제하고 다시 만든 후 다시 실행하도록 명시적으로 언급하고 있습니다.migrate(사용의 제한)flush):

빈 데이터베이스에서 시작하여 모든 마이그레이션을 다시 실행하려면 데이터베이스를 삭제했다가 다시 생성한 다음 마이그레이션을 실행해야 합니다.

따라서 OP의 경우 다음 사항을 수행해야 합니다.

  1. MySQL에서 데이터베이스 삭제
  2. 데이터베이스 재생성
  3. 실행합니다.python manage.py migrate

Fast(데이터를 포함한 모든 테이블을 드롭 및 작성):

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

주의:

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

Django-Truncate 라이브러리를 사용하여 테이블 구조를 삭제하지 않고 테이블의 모든 데이터를 삭제할 수 있습니다.

예:

  1. 먼저 단말기/명령줄을 사용하여 django-turncate를 설치합니다.
pip install django-truncate
  1. "django_truncate"에 "를 추가합니다.settings.py 삭제:
INSTALLED_APPS = [
    ...
    'django_truncate',
]
  1. 앱에서 테이블의 모든 데이터를 삭제하려면 단말기에서 이 명령을 사용합니다.
python manage.py truncate --apps app_name --models table_name

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

반응형