Quy trình gỡ cài đặt hoàn toàn ứng dụng Django, hoàn tất với việc xóa cơ sở dữ liệu là gì?
db.sqlite3
và xóa nó khỏi INSTALLED_APPS
trong có được settings.py
không?
Quy trình gỡ cài đặt hoàn toàn ứng dụng Django, hoàn tất với việc xóa cơ sở dữ liệu là gì?
db.sqlite3
và xóa nó khỏi INSTALLED_APPS
trong có được settings.py
không?
Câu trả lời:
Django <1.7 có một lệnh quản lý tiện dụng sẽ cung cấp cho bạn SQL cần thiết để loại bỏ tất cả các bảng cho một ứng dụng. Xem tài liệu sqlclear để biết thêm thông tin. Về cơ bản, chạy ./manage.py sqlclear my_app_name
giúp bạn nhận được các câu lệnh SQL cần được thực thi để loại bỏ tất cả các dấu vết của ứng dụng trong DB của bạn. Bạn vẫn cần sao chép và dán (hoặc chuyển) các câu lệnh đó vào máy khách SQL của mình. Đối với Django 1.7 trở lên, hãy sử dụng ./manage.py migrate my_app_name zero
(xem tài liệu di chuyển ), chạy tự động dọn dẹp cơ sở dữ liệu.
Để xóa ứng dụng khỏi dự án của bạn, tất cả những gì bạn cần làm là xóa ứng dụng khỏi dự án INSTALLED_APPS
của bạn settings.py
. Django sẽ không tải ứng dụng nữa.
Nếu bạn không muốn tệp của ứng dụng bị treo nữa, hãy xóa thư mục ứng dụng khỏi thư mục dự án của bạn hoặc vị trí khác trên PYTHONPATH của bạn nơi nó cư trú.
(tùy chọn) Nếu ứng dụng đã lưu trữ các tệp phương tiện, tệp bộ nhớ cache hoặc các tệp tạm thời khác ở đâu đó, bạn cũng có thể muốn xóa chúng. Cũng nên cảnh giác với dữ liệu phiên kéo dài có thể còn sót lại từ ứng dụng.
(tùy chọn) Tôi cũng sẽ xóa mọi loại nội dung cũ.
Như vậy.
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()
./manage.py migrate my_app_name zero
. Và nó cũng sẽ tự động thực thi SQL.
sqlclear
đã bị loại bỏ trong Django 1.9 vì vậy câu trả lời này chỉ tốt cho các phiên bản trước. Xem: docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")
khỏi dự ánurls.py
settings.py
trong INSTALLED_APPS
dòng ứng dụng không cần thiết của__pycache__
và migrate
tại dự án của bạn models.py
views.py
, admin.py
kết thúc , v.v. urls.py
ứng dụng không cần thiết của bạnpython manage.py migrate
vàpython manage.py syncdb
Ứng dụng django là một "tập hợp" các tệp * .py và một thư mục có tên ứng dụng django. Vì vậy, bạn có thể chỉ cần xóa toàn bộ thư mục với tất cả các tệp * .py
Để "loại bỏ" các bảng khỏi DB, bạn nên sử dụng DELETE FROM <app-name_table-names>
Hơn nữa, bạn phải xóa các dòng với tên ứng dụng khỏi setting.py trong thư mục gốc
Tôi thực sự thích các bước từ bài viết này - nó bao gồm hỗ trợ di chuyển .
Có thể nó cần phải được điều chỉnh trong hai Bản cập nhật mã - nhưng có vẻ thực sự an toàn khi bạn phải làm việc với nhiều triển khai (như: giai đoạn thử nghiệm, phiên bản BETA và sản xuất - trong trường hợp của tôi)
Trong bối cảnh của tôi, các dự án tồn tại nhiều lần: Tôi có một hệ thống phát triển, một số đồng đội có một hệ thống phát triển, có một hệ thống dàn dựng cho khách hàng và một hệ thống sản xuất. Điều này có nghĩa là tôi không muốn thực hiện các lệnh sql bằng tay. Tôi muốn nó được tự động hóa.
Mục tiêu: Xóa ứng dụng và tất cả các bảng cơ sở dữ liệu.
xóa tất cả các tệp khỏi ứng dụng, ngoại trừ thư mục "di chuyển"
Thực hiện lệnh này: manage.py makemigrations -n drop_all_tables my_app_to_remove
Thư mục bây giờ trông như thế này:
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
Để lại my_app_to_remove
trong tệp "settings.py".
Cập nhật tất cả các dự án. Yêu cầu các thành viên trong nhóm cập nhật dự án của họ và chạy quá trình di chuyển.
Bây giờ, hãy xóa "my_app_to_remove" khỏi settings.py và triển khai lại.