tipos tablas datos consultas python mysql django django-1.3

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).