Яка процедура повністю видалити додаток 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. Таким чином, ви можете просто видалити всю папку з усіма * .py файлами
Щоб "видалити" таблиці з БД, ви повинні використовувати DELETE FROM <app-name_table-names>
Крім того, ви повинні видалити рядки з назвою програми-імені з setu.py у кореневому каталозі
Я дуже люблю кроки з цієї статті - це включення підтримки міграції .
Можливо, його потрібно адаптувати за допомогою двох оновлень коду - але це виглядає дійсно безпечно, коли вам доведеться працювати з багатьма розгортаннями (як-от: тестовий етап, версія BETA та виробництво - в моєму випадку)
У моєму контексті проекти існують декілька разів: у мене є система розвитку, у деяких товаришів є система розвитку, є система постановки для замовника та виробнича система. Це означає, що я не хочу виконувати команди 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 і знову розгорніть.