Какова процедура полного удаления приложения Django с удалением базы данных?
db.sqlite3
, и удалить его из INSTALLED_APPS
в settings.py
?
Какова процедура полного удаления приложения Django с удалением базы данных?
db.sqlite3
, и удалить его из INSTALLED_APPS
в settings.py
?
Ответы:
В Django <1.7 есть удобная команда управления, которая предоставит вам SQL, необходимый для удаления всех таблиц для приложения. Дополнительную информацию см. В документации sqlclear . По сути, при запуске ./manage.py sqlclear my_app_name
вы получаете операторы SQL, которые должны выполняться, чтобы избавиться от всех следов приложения в вашей БД. Вам все равно нужно скопировать и вставить (или передать) эти операторы в свой SQL-клиент. Для Django 1.7 и выше используйте ./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()
./manage.py migrate my_app_name zero
. И он также автоматически выполнит SQL.
sqlclear
был удален в Django 1.9, поэтому этот ответ подходит только для предыдущих версий. См .: docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")
urls.py
settings.py
в INSTALLED_APPS
ненужной строке приложения__pycache__
и migrate
в вашем проекте models.py
views.py
, admin.py
конец и т. д. urls.py
ненужных приложенияхpython manage.py migrate
иpython manage.py syncdb
Приложение django - это «набор» файлов * .py и каталога с именем django-app-name. Таким образом, вы можете просто удалить всю папку со всеми файлами * .py
Для «удаления» таблиц из БД следует использовать DELETE FROM <app-name_table-names>
Кроме того, вам необходимо удалить строки с именем приложения из файла setting.py в корневом каталоге.
В моем контексте проекты существуют несколько раз: у меня есть система разработки, у некоторых товарищей по команде есть система разработки, есть промежуточная система для заказчика и производственная система. Это означает, что я не хочу выполнять команды sql вручную. Я хочу, чтобы это было автоматизировано.
Цель: удалить приложение и все таблицы базы данных.
удалите все файлы из приложения, кроме папки "миграции"
Выполните эту команду: 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».
Обновите все проекты. Скажите товарищам по команде, чтобы они обновили свой проект и запустили миграции.
Теперь удалите my_app_to_remove из settings.py и разверните снова.
Мне очень нравятся шаги из этой статьи - она включает поддержку миграции .
Возможно, его нужно адаптировать в двух обновлениях кода, но выглядит действительно безопасным, когда вам нужно работать со многими развертываниями (например: этап тестирования, версия BETA и производство - в моем случае)