- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions

Gabriel Trouvé
15 janvier 2023 - 15 janvier 2023 à 20:53
checkConversation résolue
2 réponses
Clé primaire ID SQLite
Bonsoir,Je suis au niveau de "Appliquer les migrations".je n'ai pas de problème, mais c'est juste pour savoir.Tu supprimes direct dans tablePlus les lignes (id 19 et 20) de la table …
00:00:00 :Dans cette partie, on va appliquer les migrations que l'on a créées pour notre modèle d'article de blog dans notre base de données.Pour ça, on va utiliser une commande que vous connaissez déjà puisqu'on l'a utilisée au tout début pour créer les modèles de l'administration dans notre base de données.
00:00:16 :Donc cette commande, c'est la commande Migrate.Et tout comme la commande Make Migrations, on peut lui spécifier quelle application on souhaite migrer dans notre base de données.
00:00:25 :Donc dans ce cas-ci, ce serait l'application Blog.Avant d'appliquer les migrations, je vais quand même vous montrer à quoi ressemble notre base de données actuellement.
00:00:32 :Donc si je reviens dans TablePlus, vous voyez qu'on a déjà toutes ces tables ici qui existent,qui ont été créées lors de la première utilisation de la commande Migrate.
00:00:41 :Donc ça, ça a appliqué les migrations qui étaient déjà présentes par défaut avec Djangoet qui nous permettent d'avoir toutes ces tables ici qui permettent de gérer notamment les sessions ou les utilisateurs ainsi que les groupes.
00:01:02 :Donc là, vous avez les migrations par exemple pour l'application Content Types, Auth, Admin.Et à chaque fois, vous voyez par exemple le nom de la migration, donc 0001 Initial.
00:01:11 :Donc c'est exactement la même chose que ce qu'on avait nous de notre côté avec notre application de blog.Mais vous voyez qu'actuellement, notre application de blog, elle n'est pas dans ces migrations.
00:01:20 :Donc pour ça, il va falloir que l'on applique les migrations que l'on a créées avec Make Migrations dans notre base de données.Donc pour ça, on utilise Migrate. On spécifie ici qu'on veut cibler précisément l'application blog.
00:01:32 :Dans ce cas-ci, là encore, comme on n'a qu'une seule application, ça ne changerait pas grand-chose et on pourra mettre juste Migrate comme ceci.Mais c'est toujours bien de préciser les choses.
00:01:40 :Là encore, avant de lancer cette commande, je vous montre juste une commande assez intéressante.C'est la commande SQL Migrate.Cette commande, elle va vous permettre d'afficher sous forme de code SQL ce qui va être exécuté lorsque vous appliquez les migrations.
00:01:54 :Donc pour ça, on va spécifier l'application ainsi que la migration sur laquelle on souhaite vérifier le code SQL.Donc dans ce cas-ci, je vais vous montrer pour 0001 Initial.
00:02:04 :Donc là, vous ne mettez pas le point py, juste le nom du fichier sans l'extension.Et j'ai oublié le i ici, donc voilà.J'appuie sur Entrée et là, vous allez avoir un aperçu du code SQL qui va être utilisé pour créer votre base de données.
00:02:17 :Donc ça peut être juste tout simplement intéressant, mais également aussi très pratique si jamais vous avez besoin de fixer des chosesou de voir plus en détail ce qu'une migration va effectuer au niveau du SQL en tant que tel.
00:02:30 :Donc là, vous voyez également toute la puissance de Django qui vous permet de créer du code SQL.Donc vous n'avez pas besoin de connaître cette façon d'écrire du code avec le Create Table,avec toutes ces choses-là ici qui sont assez compliquées, avec le Integer, Not Null, Primary Key.
00:02:45 :Donc toute cette syntaxe du code SQL, vous n'avez pas besoin de vous en occuper.C'est Django qui le fait pour vous lorsque vous allez utiliser la commande Migrate.
00:02:53 :Mais si jamais vous voulez voir le SQL, vous pouvez le faire avec SQL Migrate.Donc assez parlé, je vais maintenant lancer cette migration.Donc python manage.py, on fait Migrate et on cible l'application blog.
00:03:05 :Assurez-vous de bien être dans le dossier qui contient le fichier manage.py, donc dans ce cas-ci, le dossier source.J'appuie sur Entrée pour valider.Et là, on voit qu'il va appliquer toutes les migrations sur blog.
00:03:16 :Et il a trouvé deux migrations qui n'ont pas encore été appliquées, donc Initial et Blog Post Description.Si on relance cette commande une deuxième fois, là, cette fois-ci, il n'y aura plus de migrations à appliquerpuisqu'elles ont toutes été appliquées, donc il n'a pas besoin de créer quoi que ce soit de plus à l'intérieur de notre base de données.
00:03:33 :Et comme je vous ai montré il y a quelques instants, c'est vraiment grâce à cette table Django Migrations ici, si j'actualise,que, en fait, Django va savoir quelle migration il faut appliquer.
00:03:43 :Donc là, vous voyez, j'ai actualisé et on a bien notre application blog avec le nom des migrations qui ont été appliquées,qui ont été rajoutées dans cette table.
00:03:51 :Donc c'est vraiment comme ça que Django suit la trace de ce qui a été appliqué ou ce qui n'a pas été appliqué.Si je prends ces deux rangées ici et que je les supprime, donc là, je vous conseille vraiment de ne pas faire ce genre d'opération,c'est vraiment parce que je sais ce que je fais, je vais faire comme dans les pubs, je vais vous expliquer qu'il ne faut pas faire ça chez vous.
00:04:06 :Donc là, je le fais juste pour vous montrer, mais généralement, ce n'est vraiment pas quelque chose à faire.Donc je supprime ces deux entrées ici, je vais commit mes changements.
00:04:14 :Donc pour faire ça, en fait, il faut cliquer tout en haut ici à gauche sur l'icône.Vous pouvez faire Command-S ou Control-S sur Windows pour valider,puisque actuellement, j'ai dit que je voulais supprimer ces entrées ici, mais je ne l'ai pas encore effectué.
00:04:27 :Donc pour faire ce changement, je fais Control-S ou Command-S sur Mac.Et là, vous voyez que donc dans cette table Django Migrations, je n'ai plus ces entrées.
00:04:35 :Donc si je reviens ici dans mon terminal et que je refais cette commande Migrate, là, il va réappliquer ces changements.Et alors là, vous voyez qu'il ne les applique pas puisque la base Block Post existe déjà.
00:04:47 :Donc si je voulais vraiment revenir à un état où il n'y a rien, il faudrait également que je supprime cette table ici.Donc c'est pour ça que je vous disais de ne vraiment pas le supprimer vous-même,puisque vous voyez, on commence à se prendre des erreurs comme ça qui sont un peu dures à débuguer.
00:04:58 :Donc là, dans ce cas-ci, c'est assez simple. Il nous dit que la table existe déjà, donc il ne peut pas la recréer.Donc assez logiquement, si je fais un clic droit pour supprimer cette table, je valide en cliquant sur OK.
00:05:08 :Je commit avec Command-S.Là, vous voyez que donc la table qui correspond à mon modèle d'article de blog n'existe plus dans ma base de données.
00:05:15 :Et je peux donc revenir ici dans mon terminal pour réappliquer ces migrations.Et là, logiquement, on n'a plus de problèmes, on n'a plus d'erreurs.Et si on revient à notre base de données qu'on actualise, on a bien notre table Blog Block Post qui est affichée ici.
00:05:29 :Donc on a le nom de l'application en premier, Blog, et ensuite le nom du modèle.Et si je reviens dans Django Migrations, tout en bas ici, j'ai bien là encore mes migrations qui sont appliquées.
00:05:38 :Donc vous voyez qu'on peut défaire et refaire des migrations.Il faut vraiment juste comprendre comment tout ça fonctionne.C'est à la fois un peu de base de données, un peu de SQL, un peu de Python.
00:05:48 :Et tout ça qui est quand même grandement facilité avec ces opérations qu'on a disponibles directement grâce à Manage.py.Donc à savoir Make Migrations qui nous permet de préparer les données qui vont être appliquées dans notre base de données.
00:06:01 :Et ensuite Migrate qui nous permet de concrètement effectuer ces opérations dans notre base de données.Donc vraiment le plus important là-dedans, c'est les migrations.Vous voyez que Migrate, on peut toujours recréer les éléments dans notre base de données.
00:06:13 :Mais par contre les migrations ici, si vous les supprimez, on peut les recréer aussi.On peut refaire un Make Migrations, mais il faut vraiment faire attention.
00:06:20 :Puisque comme je vous disais, si vous recréez les migrations depuis le début, là on a un exemple très simple.Donc ça va, on peut retomber sur ses pieds.
00:06:27 :Mais quand vous avez des exemples un peu plus complexes, ça peut devenir assez difficile à débuguer.Donc finalement dans cette partie, la seule chose que vous avez besoin de retenir, c'est cette commande Migrate,suivie du nom de l'application, qui nous permet d'appliquer les migrations qui n'ont pas encore été appliquées.
00:06:42 :Donc c'est bien important, puisque si vous avez déjà appliqué ces migrations, vous n'avez pas besoin de le refaire.Et c'est vraiment uniquement quand vous aurez de nouvelles migrations,donc qui auront été créées avec Make Migrations, que vous allez devoir relancer cette commande Migratepour répercuter ces changements dans votre base de données.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.