[PYTHON] Effectuer un test d'application de fichier de migration avec Django + PostgreSQL (Evil Edition)

Mémorandum d'opération dans Django + PostgreSQL pour moi Ce n'est pas la bonne façon de procéder et cela devrait être fait de manière simple. Décrit qu'il existe également une telle méthode.

L'exactitude de la procédure n'est pas garantie.

Objectif

Si vous changez de modèle dans Django Dans l'environnement de vérification partagé par tous Correspondent après l'application du fichier de migration.

Cependant, c'est une procédure correspondante pour ceux qui ont du mal à écrire du code supplémentaire.

supposition

Aperçu de la procédure

--Préparer la base de données de destination de sauvegarde pour la base de données cible

procédure

Préparer la base de données de destination de sauvegarde pour la base de données cible

Préparation de la base de données de destination de sauvegarde


$ createdb targetdb_evate;

Déconnecter la session existante

Déconnectez la session connectée à PostgreSQL. (Bien sûr, après avoir confirmé qu'aucune opération n'a été effectuée)

Vérifier les sessions existantes


$ psql
postgres=# select pid, datname from pg_stat_activity;

Spécifiez le pid confirmé par la commande ci-dessus et lancez le SQL suivant.

Déconnecter la session


postgres=# select pg_terminate_backend($pid) from pg_stat_activity;

Sauvegarder la base de données cible

De la base de données cible (targetdb) à la base de données de destination de sauvegarde (targetdb_evade) Sauvegardez vos données.

Sauvegarde de la base de données


$ pg_dump -Ft targetdb | pg_restore -d targetdb_evade

S'il reste des sessions, cela échouera ici.

Appliquer la migration

Appliquez la migration Django de manière appropriée.

Appliquer la migration


$ python manage.py migrate

Après l'application, vérifiez le fonctionnement et exécutez divers tests.

Annuler de la sauvegarde

Revenir à l'état avant la migration à partir de la base de données de destination d'enregistrement ** Déconnectez la session existante ** Répétez les étapes pour répéter Déconnectez toutes les sessions.

Supprimez la base de données appliquée à la migration (targetdb) et Renommez la base de données enregistrée (targetdb_evade) et vous avez terminé.

Retour de sauvegarde


$ psql
postgres=# drop database targetdb;
postgres=# alter database targetdb_evade rename to targetdb;

Recommended Posts

Effectuer un test d'application de fichier de migration avec Django + PostgreSQL (Evil Edition)
Le moyen le plus simple de démarrer avec Django
L'histoire de l'affichage des fichiers multimédias dans Django
L'histoire de la création d'une application Web qui enregistre des lectures approfondies avec Django
Télécharger des fichiers avec Django
Extraire le tableau des fichiers image avec OneDrive et Python
Jusqu'au début du tutoriel django avec pycharm sous Windows
Tester la version du module argparse
Développement piloté par les tests avec Django Partie 4
Développement piloté par les tests avec Django Partie 6
Mesurer la couverture des applications Django avec Coverage.py
Gérer les fichiers csv avec Django (django-import-export)
Gérer les fichiers de configuration Django avec Python-decouple
Déployer l'application Django avec Docker
Développement piloté par les tests avec Django Partie 2
Tester l'adéquation de la distribution
Créer une application Web avec Django
Développement piloté par les tests avec Django Partie 1
L'histoire du remontage du serveur d'application
Développement piloté par les tests avec Django Partie 5
Application de graphiques avec des curseurs
Paramètre pour entrer le contenu de la bibliothèque avec pytest et effectuer un test de débogage
Enregistrement de domaine et conversion HTTPS de l'application Django créée avec CodeStar avec Route53
L'histoire de l'utilisation de mysqlclient car PyMySQL ne peut pas être utilisé avec Django 2.2