장고 앱을 완전히 제거하는 방법은 무엇입니까?
데이터베이스 제거가 완료된 장고 앱을 완전히 제거하기 위한 절차는 무엇입니까?
장고 < 1.7은 앱에 대한 모든 테이블을 삭제하는 데 필요한 SQL을 제공하는 편리한 관리 명령을 가지고 있습니다.자세한 내용은 sqlclear 문서를 참조하십시오.기본적으로, 달리기.
./manage.py sqlclear my_app_name
DB에 있는 앱의 모든 추적을 제거하기 위해 실행해야 하는 SQL 문을 가져옵니다.이러한 문을 복사하여 SQL 클라이언트에 붙여넣어야 합니다. 1은 장고 1.7 이상을 사용합니다../manage.py migrate my_app_name zero
(마이그레이션 문서 참조), 데이터베이스 정리를 자동으로 실행합니다.에서 앱을 .
INSTALLED_APPS
당의프트의에서.settings.py
장고는 더 이상 앱을 로드하지 않습니다.앱의 파일을 더 이상 사용하지 않으려면 프로젝트 디렉터리 또는 해당 디렉터리가 있는 PYONPATH의 다른 위치에서 앱 디렉터리를 삭제합니다.
(선택사항) 앱이 미디어 파일, 캐시 파일 또는 기타 임시 파일을 어딘가에 저장한 경우에는 이러한 파일도 삭제할 수 있습니다.또한 앱에서 남아 있을 수 있는 세션 데이터가 남아 있지 않도록 주의해야 합니다.
(선택사항) 오래된 내용 유형도 제거합니다.
그런 식으로.
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()
내 맥락에서 프로젝트는 여러 번 존재합니다.저는 개발 시스템을 가지고 있고, 일부 팀원들은 개발 시스템을 가지고 있으며, 고객을 위한 준비 시스템과 생산 시스템이 있습니다.이것은 sql 명령을 수동으로 실행하고 싶지 않다는 것을 의미합니다.저는 그것이 자동화되기를 원합니다.
목표: 앱과 모든 데이터베이스 테이블을 제거합니다.
1단계: 앱을 비우지만 설치된 상태로 유지
폴더 "마이그레이션"을 제외한 모든 파일을 앱에서 제거합니다.
다음 명령을 실행합니다.
python 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
.py".settings.py "에 .
2단계: 변경 사항 배포
모든 프로젝트를 업데이트합니다.팀 동료들에게 프로젝트를 업데이트하고 마이그레이션을 실행하라고 말합니다.
3단계: 설정에서 "my_app_to_remove"를 제거합니다.파이의
이제 settings.py 에서 "my_app_to_remove"를 제거하고 다시 배포합니다.
- 에한대논에 대해
settings.py
INSTALLED_APPS
의 line ▁unnecess. - 폴더를 합니다.
__pycache__
그리고.migrate
당신의 프로젝트에서 - 불요한모삭에서 합니다.
models.py
- 모든 가져오기 링크 삭제
views.py
,admin.py
끝 등 - 의모링크삭에 있는 모든 합니다.
urls.py
의 불필요한 앱의 에. - 데이터베이스에서 앱과 관련된 불필요한 테이블을 삭제합니다(도움말 프로그램 "Valentina Studio"로 합니다)
- 앱의 폴더 삭제
- 명령줄에서 다음을 수행합니다.
python manage.py migrate
그리고.python manage.py syncdb
django app은 *.py 파일의 "세트"이며 django-app-name이 있는 디렉토리입니다.따라서 모든 *.py 파일이 있는 전체 폴더를 삭제하기만 하면 됩니다.
을 " DB를 .DELETE FROM <app-name_table-names>
또한 루트 디렉토리의 setting.py 에서 app-name이 있는 행을 삭제해야 합니다.
첫 번째 단계로 앱 모델을 사용하지 않도록 하고 배포합니다.이는 롤링 배포에 필수적입니다.아래의 참고 사항을 확인하십시오.
그러면 두 가지 옵션이 있습니다.
옵션 1
- (실행) 설정
python manage.py migrate <app_name> zero
이렇게 하면 앱에 대한 모든 마이그레이션이 되돌리고 다음을 정리합니다.django_migrations
- 코드, 코(앱),
INSTALLED_APPS
,urls.py
아래) - 배포)
python manage.py migrate
)
옵션 2
- 앱에서 모든 모델 제거
- 배포
- 앱(코),
INSTALLED_APPS
,urls.py
아래) - 배포
- (수동) 청소
django_migrations
이 대답은 자동 롤링 배포 환경(예: Heroku)에서 생각하는 것입니다.수동이란 자동 배포에서는 일반적으로 수행할 수 없음을 의미합니다.배포는 기본적으로 다음과 같습니다.python manage.py migrate
일반적으로 자동 배포에서 수행됩니다.
메모들
- 다른 앱에서 이 앱을 가져오는 코드를 제거해야 합니다. 또에 있모든참조에 있는 모든 참고 .
settings.py
(그러나 그것을 간직하세요.INSTALLED_APPS
마이그레이션을 실행할 수 있습니다.urls.py
타기. migrate <app_name> zero
에서는 해당 마이그레이션에 따라 모든 마이그레이션을 되돌립니다.따라서 다른 앱의 마이그레이션이 이러한 마이그레이션에 의존하는지 주의해야 합니다.- 스키마 마이그레이션뿐만 아니라 데이터 마이그레이션도 있는 경우 계단식 삭제에 주의하십시오.
- 다른 앱에 정의된 신호를 수신하는 신호 수신기는 롤링 배포에서 문제가 될 수 있습니다.
레퍼런스
Django 앱(모델 포함)을 완전히 제거하려면 아래 단계를 따르십시오.앱을 제거한다고 가정해 보겠습니다.note_app
:
- 다른 앱에서 note_app 가져오기를 검색합니다.가장 쉬운 방법은 "from note_app"을 프로젝트 전체에서 검색하는 것입니다.note_app 디렉토리를 검색에서 제외할 수도 있습니다.
- 의 모든 모델에 주석 달기
note_app.models
다음에서 항목을 제거해야 할 수도 있습니다.note_app.admin
django admin에 note_app 모델을 등록한 경우 파일. - Django 앱을 실행하려고 할 때 오류를 찾고 해결하십시오. P.S. 1단계에서 일부 모델 가져오기를 놓쳤을 수 있습니다.
- ForeignKey, OneToOne 및 ManyToMany 필드를 정의하는 방법에 따라 1단계에서 note_app 모델의 일부 키를 놓쳤을 수 있습니다.계속하기 전에 다른 앱의 모델에서 note_app 모델을 가리키는 필드를 삭제해야 합니다.이러한 필드가 누락되지 않았는지 잠시 확인한 후, 누락된 필드가 있으면 남아 있는 필드를 삭제하고 데이터베이스에서 필드를 제거하는 마이그레이션을 작성합니다.
- 달려.
makemigrations
그러면 note_app 마이그레이션이 생성되어 방금 추천한 모든 모델이 삭제됩니다.이 마이그레이션을 수행하면 note_app 모델을 참조하는 필드도 다른 앱의 모델에서 제거해야 합니다. - 마이그레이션을 실행합니다.앱 디렉터리를 삭제하기 전에 운영 환경을 포함한 모든 환경에서 마이그레이션을 실행해야 합니다.데이터베이스에서 앱의 모델을 제거하는 마이그레이션은 note_app 디렉토리에서 예상치 못하게 수행됩니다.앱 디렉터리를 너무 일찍 삭제하면 데이터베이스를 정리하기 전에 이러한 마이그레이션을 삭제할 수 있습니다.
- 삭제된 모델의 콘텐츠 유형이 오래되었다는 알림이 표시될 수 있습니다.이러한 내용 유형을 삭제할지 여부를 묻는 메시지가 나타나면 "예"라고 대답합니다.
Git
팁: 마이그레이션을 커밋하고 커밋을 메모한 다음 note_app 디렉터리를 삭제하는 별도의 커밋을 만듭니다.스테이징 또는 프로덕션 환경에서 변경 사항을 적용할 준비가 되면, 작성한 커밋을 체크아웃하고 마이그레이션을 실행한 다음 최신 커밋을 체크아웃하여 앱 디렉터리를 삭제합니다.첫 번째 커밋은 여전히 installed_APPs에 note_app가 있어야 합니다.- note_app이 들어 있는 디렉터리를 삭제합니다.
- 제다한을 합니다.
note_app
의 신의에서.INSTALLED_APPS
설정
그리고 그것은 정말로 그것에 관한 것입니다… 매우 쉽습니다:)
아래의 3단계는 장고 프로젝트에서 앱을 완전히 제거할 수 있습니다.
- 아래와 같이 앱을 지정하여 0으로 마이그레이션합니다.*아래 명령은 데이터베이스에서 앱의 모든 테이블을 삭제합니다.
python manage.py migrate <app_name> zero
- <app_label> <migrationname>: ... 앱 이름을 가져옵니다.0이라는 이름을 사용하여 애플리케이션에 적용된 모든 마이그레이션을 되돌립니다.
수 없으므로 주의하시기 바랍니다.zero
아래와 같이 지정하면 오류가 발생합니다.
python manage.py migrate <app_name> <app_name> zero
- 에서 앱을 합니다.
INSTALLED_APPS
settings.py
아래와 같이:
# "settings.py"
INSTALLED_APPS = [
# "my_app",
]
- 장고 프로젝트에서 앱 폴더를 삭제합니다.
언급URL : https://stackoverflow.com/questions/3329773/how-to-completely-uninstall-a-django-app
'programing' 카테고리의 다른 글
하위 항목에 값이 포함되어 있는지 여부를 Firebase 쿼리 (0) | 2023.07.18 |
---|---|
ASP.NET 코어에서 Swagger의 기본 URL을 변경하는 방법 (0) | 2023.07.18 |
대용량 데이터에서 NA를 가장 빠르게 대체할 수 있는 방법.표 (0) | 2023.07.18 |
Python에서 IP 주소를 검증하는 방법은 무엇입니까? (0) | 2023.07.18 |
무한 반복기에 대한 표현이 있습니까? (0) | 2023.07.18 |