¿Cuál es el procedimiento para desinstalar completamente una aplicación de Django, completa con la eliminación de la base de datos?
db.sqlite3
y eliminarla desde INSTALLED_APPS
adentro settings.py
?
¿Cuál es el procedimiento para desinstalar completamente una aplicación de Django, completa con la eliminación de la base de datos?
db.sqlite3
y eliminarla desde INSTALLED_APPS
adentro settings.py
?
Respuestas:
Django <1.7 tiene un útil comando de administración que le proporcionará el SQL necesario para eliminar todas las tablas de una aplicación. Consulte los documentos de sqlclear para obtener más información. Básicamente, ejecutar ./manage.py sqlclear my_app_name
le permite obtener las declaraciones SQL que deben ejecutarse para deshacerse de todos los rastros de la aplicación en su base de datos. Aún necesita copiar y pegar (o canalizar) esas declaraciones en su cliente SQL. Para Django 1.7 y versiones posteriores, use ./manage.py migrate my_app_name zero
(consulte los documentos de migración ), que ejecuta la limpieza de la base de datos automáticamente.
Para eliminar la aplicación de su proyecto, todo lo que necesita hacer es eliminarla de INSTALLED_APPS
su proyecto settings.py
. Django ya no cargará la aplicación.
Si ya no desea que los archivos de la aplicación permanezcan por ahí, elimine el directorio de la aplicación del directorio de su proyecto u otra ubicación en su PYTHONPATH donde reside.
(opcional) Si la aplicación almacenó archivos multimedia, archivos de caché u otros archivos temporales en algún lugar, es posible que también desee eliminarlos. También tenga cuidado con los datos de sesión persistentes que podrían quedar en la aplicación.
(opcional) También eliminaría cualquier tipo de contenido obsoleto.
Al igual que.
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
. Y también ejecutará automáticamente el SQL.
sqlclear
se eliminó en Django 1.9, por lo que esta respuesta solo es válida para versiones anteriores. Ver: docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")
del proyectourls.py
settings.py
en INSTALLED_APPS
la línea de la aplicación innecesaria__pycache__
y migrate
en su proyecto models.py
views.py
, admin.py
finalizar , etc. urls.py
su aplicación innecesariapython manage.py migrate
ypython manage.py syncdb
La aplicación django es un "conjunto" de archivos * .py y un directorio con un nombre de aplicación django. Entonces, simplemente puede eliminar toda la carpeta con todos los archivos * .py
Para "eliminar" tablas de la base de datos debe utilizar DELETE FROM <app-name_table-names>
Además, debe eliminar las líneas con el nombre de la aplicación de setting.py en un directorio raíz
Realmente me encantan los pasos de este artículo : incluye soporte de migración .
Tal vez deba adaptarse en dos actualizaciones de código, pero parece realmente seguro cuando tiene que trabajar con muchas implementaciones (como: etapa de prueba, versión BETA y producción, en mi caso)
En mi contexto, los proyectos existen varias veces: tengo un sistema de desarrollo, algunos compañeros tienen un sistema de desarrollo, hay un sistema de etapas para el cliente y un sistema de producción. Esto significa que no quiero ejecutar comandos sql a mano. Quiero que esté automatizado.
Objetivo: eliminar la aplicación y todas las tablas de la base de datos.
eliminar todos los archivos de la aplicación, excepto la carpeta "migraciones"
Ejecute este comando: manage.py makemigrations -n drop_all_tables my_app_to_remove
El directorio se ve ahora así:
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
Deje my_app_to_remove
en el archivo "settings.py".
Actualice todos los proyectos. Dígales a los compañeros de equipo que actualicen su proyecto y ejecuten las migraciones.
Ahora elimine "my_app_to_remove" de settings.py y vuelva a implementar.