python django django-1.8

python - ¿Qué debo usar en lugar de syncdb en Django 1.9?



django-1.8 (4)

Debe usar los comandos makemigrations y makemigrations que se introdujeron en django 1.7

https://docs.djangoproject.com/en/1.7/topics/migrations/

Mira esto:

$ pypy ./manage.py syncdb /usr/lib64/pypy-2.4.0/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9 warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning) (cut)

Realicé una búsqueda rápida en Google , pero no pude encontrar la respuesta: ¿qué debería usar en lugar de syncdb ?


Definitivamente deberías usar el sistema de migración . Lo que le permite realizar un seguimiento de los cambios en su models.py y crear migraciones para la base de datos. El sistema de migración utiliza los comandos makemigrations para crear migraciones y migrate para migrar la base de datos.

Si por alguna razón necesita crear una base de datos de la misma manera que syncdb hizo, hay un indicador de comando que hace que la migrate funcione de la misma manera. Solo debe hacer esto si REALMENTE lo necesita y sabe lo que está haciendo. Por ejemplo, para crear una base de datos vacía para un sistema de integración continua de su elección.

python manage.py migrate auth # performs migrations for auth and contenttypes contrib apps python manage.py migrate --run-syncdb # creates the rest of the database

Probado en Django 1.9.1.


syncdb está en desuso debido al sistema de migración , introducido con django 1.7 .

Ahora puede seguir sus cambios usando makemigrations . Esto transforma los cambios de su modelo en código python para que puedan implementarse en otras bases de datos. Cuando tenga más modificaciones que necesite aplicar a la base de datos, puede usar migraciones de datos .

Después de crear las migraciones, debe aplicarlas : migrate .

Entonces, en lugar de usar syncdb , debe usar makemigrations y luego migrate .

Flujo de trabajo en el desarrollo después de cambiar algo en sus modelos:

./manage.py makemigrations ./manage.py migrate

Y en su sistema de producción:

./manage.py migrate

Bonificación: no necesita ejecutar la migrate para cada cambio. Si tiene varios cambios no aplicados aún, django los ejecutará en el orden correcto para usted.


syncdb tiene algún problema con la migración de db. entonces, después de que se introdujeron django 1.7, makemigrations y makemigrations . Ahora en django 1.9 syncdb ha quedado en desuso. tratar
1. python manage.py makemigrations que detecta cambios en db y crea un archivo .py como dentro de la carpeta de migraciones 2. python manage.py migrate aplicará las migraciones a la base de datos