web-dev-qa-db-fra.com

Que devrais-je utiliser à la place de syncdb dans Django 1.9?

Regarde ça:

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

J'ai lancé un recherche rapide sur Google , mais je n'ai pas trouvé de réponse - que devrais-je utiliser à la place de syncdb?

66
d33tah

syncdb est obsolète à cause de le système de migration , introduit avec Django 1.7 .

Vous pouvez maintenant suivre vos modifications à l'aide de makemigrations. Cela transforme vos modifications de modèle en un code python pour les rendre déployables dans une autre base de données. Lorsque vous devez apporter d'autres modifications à la base de données, vous pouvez utiliser migration de données .

Après avoir créé les migrations, vous devez les appliquer : migrate.

Ainsi, au lieu d'utiliser syncdb, vous devez utiliser makemigrations puis migrate.

Flux de travail en développement après avoir modifié quelque chose dans vos modèles:

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

Et sur votre système de production:

./manage.py migrate

Bonus: vous n'avez pas besoin de lancer migrate pour chaque changement. Si vous avez plusieurs modifications non encore appliquées Django les exécutera dans le bon ordre pour vous.

85
tjati

Vous devez absolument utiliser système de migration . Ce qui vous permet de suivre les changements dans votre models.py, et créez des migrations pour la base de données. Le système de migration utilise les commandes makemigrations pour créer des migrations et migrate pour migrer la base de données.

Si, pour une raison quelconque, vous devez créer une base de données de la même manière que syncdb, il existe un indicateur de commande qui fait en sorte que migrate fonctionne de la même manière. Vous ne devriez le faire que si vous [~ # ~] vraiment [~ # ~] en avez besoin et que vous savez ce que vous faites. Par exemple, pour créer une base de données vide sur un système d'intégration continue de votre choix.

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

Testé sur Django 1.9.1.

50
Don Mums

Vous devez utiliser les commandes makemigrations et migrate introduites dans Django 1.7

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

9
dizballanze

syncdb a quelques problèmes avec la migration de la base de données. donc, après Django 1,7 makemigrations et migrate ont été introduits. Maintenant dans Django 1,9 syncdb a été déconseillé. essayez
1. python manage.py makemigrations qui détecte les modifications de la base de données et en crée un .py fichier dans le dossier de migrations 2. python manage.py migrate appliquera les migrations à la base de données

3
Amrendra