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