python - datos - tablas django
¿Cuál es la forma más fácil de borrar una base de datos de la CLI con manage.py en Django? (3)
El más rápido (descarta y crea todas las tablas, incluidos los datos):
./manage.py reset appname | ./manage.py dbshell
Precaución:
- Puede que no funcione en Windows correctamente.
- Podría mantener algunas tablas viejas en el DB
Estoy usando Django para construir un sitio web con MySQL. Ahora que estoy aprendiendo, necesito cambiar el modelo muy seguido, así que quiero que todas las tablas se borren y se cree una nueva tabla.
Pero syncdb
no toca las tablas existentes. ¿Hay alguna forma mejor de manejar este problema?
Si no te importan los datos:
La mejor forma sería soltar la base de datos y ejecutar syncdb
nuevamente. O puede ejecutar:
Para Django> = 1.5
python manage.py flush
Para Django <1.5
python manage.py reset appname
(puede agregar --no-input
al final del comando para que omita la solicitud interactiva).
Si te importan los datos:
De los documentos:
syncdb solo creará tablas para modelos que aún no se han instalado. Nunca emitirá sentencias ALTER TABLE para hacer coincidir los cambios realizados en una clase de modelo después de la instalación. Los cambios en las clases de modelos y los esquemas de la base de datos a menudo implican cierta ambigüedad y, en esos casos, Django tendría que adivinar los cambios correctos que debe realizar. Existe el riesgo de que se pierdan datos críticos en el proceso.
Si ha realizado cambios en un modelo y desea modificar las tablas de la base de datos para que coincidan, utilice el comando sql para mostrar la nueva estructura SQL y compárela con su esquema de tabla existente para resolver los cambios.
https://docs.djangoproject.com/en/dev/ref/django-admin/
Referencia: Preguntas frecuentes - https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
La gente también recomienda South ( http://south.aeracode.org/docs/about.html#key-features ), pero no lo he probado.
Usando extensiones Django , ejecutando:
./manage.py reset_db
Borrará las tablas de la base de datos y luego ejecutará:
./manage.py syncdb
Los recreará (sur puede pedirte que migres cosas).