Django 앱을 완전히 제거하고 데이터베이스 제거를 완료하는 절차는 무엇입니까?
답변
-
Django <1.7에는 앱의 모든 테이블을 삭제하는 데 필요한 SQL을 제공하는 편리한 관리 명령이 있습니다. 자세한 정보는 sqlclear 문서 를 참조하십시오. 기본적으로 실행
./manage.py sqlclear my_app_name
하면 DB에서 앱의 모든 흔적을 제거하기 위해 실행해야하는 SQL 문을 얻을 수 있습니다. 이러한 명령문을 SQL 클라이언트에 복사하여 붙여 넣어야합니다 (또는 파이프). Django 1.7 이상 에서는 데이터베이스 정리를 자동으로 실행하는 ( migration 문서./manage.py migrate my_app_name zero
참조 )를 사용 하십시오 . -
프로젝트에서 앱을 제거하려면
INSTALLED_APPS
프로젝트의settings.py
. Django는 더 이상 앱을로드하지 않습니다. -
앱의 파일이 더 이상 사용되지 않도록하려면 프로젝트 디렉터리 또는 PYTHONPATH의 다른 위치에서 앱 디렉터리를 삭제하십시오.
-
(선택 사항) 앱이 미디어 파일, 캐시 파일 또는 기타 임시 파일을 어딘가에 저장 한 경우 해당 파일도 삭제할 수 있습니다. 또한 앱에서 남을 수있는 느린 세션 데이터에주의하십시오.
-
(선택 사항) 오래된 콘텐츠 유형도 제거합니다.
그렇게.
from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
if not c.model_class():
print "deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
답변
- 에 주석
settings.py
의INSTALLED_APPS
불필요한 응용 프로그램의 라인 - 모든 폴더를 삭제
__pycache__
하고migrate
프로젝트 - 불필요한 모델 삭제
models.py
- 의 모든 가져 오기 링크 삭제
views.py
,admin.py
end 등의 . - 모든 링크 삭제
urls.py
불필요한 앱의 - 데이터베이스에서 앱과 관련된 불필요한 테이블을 삭제합니다 (도움말 프로그램 “Valentina Studio”를 사용하여 수행합니다).
- 앱 폴더 삭제
- 명령 줄에서 그것을 수행
python manage.py migrate
하고python manage.py syncdb
답변
django 앱은 * .py 파일의 “세트”이며 django-app-name이있는 디렉토리입니다. 따라서 모든 * .py 파일이있는 전체 폴더를 간단히 삭제할 수 있습니다.
DB에서 테이블을 “제거”하려면 다음을 사용해야합니다. DELETE FROM <app-name_table-names>
또한 루트 디렉터리의 setting.py에서 app-name과 같은 줄을 삭제해야합니다.
답변
이 기사의 단계를 정말 좋아합니다 . 여기에는 마이그레이션 지원 이 포함됩니다 .
두 번의 코드 업데이트로 조정해야 할 수도 있습니다.하지만 많은 배포 (예 : 테스트 단계, 베타 버전 및 프로덕션-제 경우)로 작업해야 할 때 정말 안전 해 보입니다.
답변
제 맥락에서 프로젝트는 여러 번 존재합니다. 저는 개발 시스템이 있고, 일부 팀원에게는 개발 시스템이 있으며, 고객을위한 스테이징 시스템과 프로덕션 시스템이 있습니다. 이것은 손으로 SQL 명령을 실행하고 싶지 않다는 것을 의미합니다. 자동화되기를 바랍니다.
목표 : 앱과 모든 데이터베이스 테이블을 제거합니다.
1 단계 : 앱을 비우고 설치된 상태로 둡니다.
“migrations”폴더를 제외한 모든 파일을 앱에서 제거합니다.
다음 명령을 실행하십시오. manage.py makemigrations -n drop_all_tables my_app_to_remove
이제 디렉토리는 다음과 같습니다.
my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py
my_app_to_remove
“settings.py”파일을 그대로 둡니다 .
2 단계 : 변경 사항 배포
모든 프로젝트를 업데이트하십시오. 팀 동료에게 프로젝트를 업데이트하고 마이그레이션을 실행하도록 지시하십시오.
3 단계 : settings.py에서 “my_app_to_remove”제거
이제 settings.py에서 “my_app_to_remove”를 제거하고 다시 배포하십시오.