elimine el nombre de la aplicación de las aplicaciones instaladas en settings.py, luego elimine cualquier enlace a esa aplicación desde el archivo urls.py principal. Entonces puedes eliminar esa aplicación de forma segura
Aseem
Si está en desarrollo usando SQLite y no le importa restablecer la base de datos, ¿está bien simplemente eliminar la carpeta de la aplicación db.sqlite3y eliminarla desde INSTALLED_APPSadentro settings.py?
Kevin
Respuestas:
150
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_namele 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_APPSsu 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 importContentTypefor c inContentType.objects.all():ifnot c.model_class():print"deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
Si la aplicación que se está eliminando tiene migraciones, de las que dependen las migraciones de otras aplicaciones, el sistema de migración fallará cuando vea que esas migraciones dependientes ya no existen. Tenga cuidado al usar la respuesta anterior si la aplicación que se eliminará es una dependencia en el historial de migración de otra de sus aplicaciones.
Filip Kilibarda
1
Y para completar, normalmente deberá eliminar una referencia a include("appname.urls")del proyectourls.py
nigel222
16
comentar settings.pyen INSTALLED_APPSla línea de la aplicación innecesaria
eliminar todas las carpetas __pycache__y migrateen su proyecto
eliminar modelo innecesario en models.py
eliminar todos los enlaces de importaciónviews.py , admin.pyfinalizar , etc.
eliminar todos los enlaces de urls.pysu aplicación innecesaria
en la base de datos elimine las tablas innecesarias asociadas a la aplicación (lo hago con el programa de ayuda "Valentina Studio")
eliminar la carpeta de la aplicación
en la línea de comando hazlo: python manage.py migrateypython 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
Suponiendo que no está compartiendo la base de datos con otra aplicación, puede soltar la base de datos nombrada en settings.py.
joel3000
cada aplicación tiene su propia base de datos - no está mal
V-Light
3
@ V-Light cada aplicación tiene su propia tabla y cada proyecto tiene su propia base de datos.
Alireza Savand
2
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.
Paso 1: vacíe la aplicación, pero déjela instalada
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
db.sqlite3
y eliminarla desdeINSTALLED_APPS
adentrosettings.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 proyectosettings.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.
fuente
./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
enINSTALLED_APPS
la línea de la aplicación innecesaria__pycache__
ymigrate
en su proyectomodels.py
views.py
,admin.py
finalizar , etc.urls.py
su aplicación innecesariapython manage.py migrate
ypython manage.py syncdb
fuente
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
fuente
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)
fuente
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.
Paso 1: vacíe la aplicación, pero déjela instalada
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í:
Deje
my_app_to_remove
en el archivo "settings.py".Paso 2: implementar los cambios
Actualice todos los proyectos. Dígales a los compañeros de equipo que actualicen su proyecto y ejecuten las migraciones.
Paso 3: elimine "my_app_to_remove" de settings.py
Ahora elimine "my_app_to_remove" de settings.py y vuelva a implementar.
fuente