Vérifier l'attente de Django migrations
Dans Django, est-il un moyen facile de vérifier si tous les migrations de base de données ont été exécutés? J'ai trouvé manage.py migrate --list
, qui me donne les informations que je souhaite, mais le format n'est pas très lisible à la machine.
Pour le contexte: j'ai un script qui ne devrait pas commencer à courir jusqu'à ce que la base de données a été migré. Pour diverses raisons, il serait difficile d'envoyer un signal à partir du processus qui exécute les migrations. Donc j'aimerais avoir mon script de vérifier périodiquement la base de données pour voir si toutes les migrations.
vous exécutez un script automatisé pour vérifier les migrations comme tissu ?
stackoverflow.com/a/8491203/4325513
stackoverflow.com/a/8491203/4325513
OriginalL'auteur Moss Collum | 2015-08-05
Vous devez vous connecter pour publier un commentaire.
Shell
La seule solution simple que j'ai trouvé jusqu'à présent est en cours d'exécution
qui va afficher une chaîne vide dans le cas où toutes les migrations ont été appliquées.
Cependant, il est étroitement lié au format de sortie.
Python
J'ai vérifié le code source de
migrer
commande et il semble que cela devrait faire l'affaire:./manage showmigrations --list
ou./manage showmigrations --plan
Le python solution est toujours de travailler avec v 2.1
OriginalL'auteur
Essayer,
retourne,
Mise à jour:
Si vous avez mis à jour Django version >=
1.11
, utiliser la commande ci-dessous,OriginalL'auteur
1.10 notes de version:
Les commandes de la liste ont exactement le même problème que l'OP a: la sortie n'est pas facilement lisible par la machine. Je ne vois pas comment vous avez abordé cette question. Le
--check
de commande donne une réponse simple à la question spécifique de l'OP demandé, "avez tous les migrations été exécuté ou pas", et il est très bien adapté pour des tâches automatisées, c'est exactement pourquoi il existe.Le mien n'a pas été ajoutée directe alternative à la vôtre. J'ai réellement aimé votre réponse mieux que les autres. Semblait incomplète. --check semble sympa (pour la petite partie du processus, il est fait pour), mais c'est ennuyeux la façon dont le comportement a changé de 1.8. Je vais attendre un peu plus longtemps avant de l'utiliser. Comme pour l'analyse de la sortie, c'est odieux ce processus est complexe, mais la commande grep est simple & inévitables en général. :p quant à sa question exacte, j'ai de nouveau le problème plus large, sans que une solution "facile". Mettra à jour une réponse avec un script si je fais un. Ou quelqu'un d'autre peut.
Je souhaite que ce était la bonne réponse, mais il ne fonctionne malheureusement pas pour les migrations qui ont été créés, mais n'est pas appliqué.
OriginalL'auteur
./manage.py showmigrations
#vérifier déjà migrations ont été appliquées ou non(ou:
./manage.py showmigrations someApp
#pour l'application spécifique seul)./manage.py makemigrations --dry-run
#vérifier pour les migrations être faite(ou:
./manage.py makemigrations someApp --dry-run
#pour l'application spécifique seul)./manage.py makemigrations
#faire les migrations(ou:
./manage.py makemigrations someApp
#pour l'application spécifique seul)./manage.py showmigrations
#vérifier déjà migrations ont été appliquées ou non(ou:
./manage.py showmigrations someApp
#pour l'application spécifique seul)./manage.py sqlmigrate someApp 0001
#afficher SQL changements pour l'application spécifique & migration./manage.py migrate
#appliquer les migrations(ou:
./manage.py migrate someApp
#pour l'application spécifique seul)./manage.py showmigrations
#vérifier déjà migrations ont été appliquées ou non(ou:
./manage.py showmigrations someApp
#pour l'application spécifique seul)./manage.py makemigrations --dry-run
#vérifier pour les migrations être faite(ou:
./manage.py makemigrations someApp --dry-run
#pour l'application spécifique seul)PS:
./manage.py migrate someApp zero
#annuler toutes les migrations pour l'application spécifiqueOriginalL'auteur
À l'aide de @Ernest code, j'ai écrit un
manage_custom.py
pour l'attente des migrations. Vous pouvez obtenir le liste d'attente des migrations aussi migrer ceux en attente de migrations (seulement), donc en économisant votre temps.manage_custom.py
Utilisation:
PS: Merci à l'environnement d'installation pour votre projet de la structure.
OriginalL'auteur
Voici mon Python soloution pour obtenir quelques informations sur la migration-unis:
Le résultat de cette fonction ressemble à ça:
Peut-être que ça aide certains d'entre vous les gars..
OriginalL'auteur
je le vérifie en regarder jusqu'à la base de données à la table
django_migrations
sorcière de stocker toutes appliquée migrationsOriginalL'auteur