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의 경우 다음 사항을 수행해야 합니다.
- MySQL에서 데이터베이스 삭제
- 데이터베이스 재생성
- 실행합니다.
python manage.py migrate
Fast(데이터를 포함한 모든 테이블을 드롭 및 작성):
./manage.py reset appname | ./manage.py dbshell
주의:
- Windows 에서는 올바르게 동작하지 않을 수 있습니다.
- 일부 오래된 테이블을 DB에 보관할 수 있습니다.
Django-Truncate 라이브러리를 사용하여 테이블 구조를 삭제하지 않고 테이블의 모든 데이터를 삭제할 수 있습니다.
예:
- 먼저 단말기/명령줄을 사용하여 django-turncate를 설치합니다.
pip install django-truncate
- "django_truncate"에 "를 추가합니다.의
settings.py
삭제:
INSTALLED_APPS = [
...
'django_truncate',
]
- 앱에서 테이블의 모든 데이터를 삭제하려면 단말기에서 이 명령을 사용합니다.
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
'source' 카테고리의 다른 글
random.seed():그게 뭘 하는데? (0) | 2023.01.09 |
---|---|
무신경한 경우에 대비하여 '으'와 '으'를 구분하기 위한 조합이 있나요? (0) | 2023.01.09 |
내부 컨텐츠를 기반으로 iframe 높이를 동적으로 만듭니다 - JQUERY/Javascript (0) | 2023.01.09 |
두 하위 문자열 사이의 문자열 찾기 (0) | 2023.01.09 |
Java 8: Java.util.function의 TriFunction(및 kin)은 어디에 있습니까?아니면 대체방법이 뭐죠? (0) | 2023.01.09 |