Яка процедура повністю видалити додаток 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 і знову розгорніть.