Session du 04 mai 2023 à 20h00
Développement Web & Frameworks
Veille & Discussions
DevOps & Environnement
Librairie Standard & Modules
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Déployer un projet Django avec Docker
-
Visite du site d'un étudiant (Christian)
-
Une sur les fichiers json
-
Mise en production sur serveur type VPS d'un projet django avec Docker et docker-compose
-
Ajout de phpmyadmin
00:00:00 :Ok, j'enregistre et je partage mon écran.Donc la dernière fois on avait fait un petit projet,donc là ce que je vous propose c'est de, on verra ça en deuxième partie,on fera, je vais couper ma caméra, j'ai pas la peine.
00:00:23 :On le mettra, on va le containeriser, donc on va le mettre dans un dockeret on verra comment on peut déployer ça facilement,parce que je sais pas si vous savez, mais en fait quand vous faites un projet Djangoet que vous faites run server, donc ça le run server déjà c'est un serveur de développement
00:00:44 :qu'il faut pas utiliser en production pour des questions de sécurité,de gestion de fichiers statiques, donc on utilisera unicorn,mais en bref quand vous utilisez le run server, automatiquement il vous crée en localla base de données DB SQLite 3.
00:01:04 :Et donc là on verra comment on fait pour lancer en parallèle une base de données maïsquellepar exemple, et comment on peut avoir du coup un truc en production assez simplementgrâce à Docker et Docker Compose.
00:01:16 :Je vous propose qu'on voie ça, mais avant si ça vous va,et Christian d'abord si t'es d'accord, je sais pas s'il est là Christian.Ouais, on a juste, je tiens un coup d'œil à ton projet là,que tu nous as envoyé sur la commu, et puis comme ça tu peux avoir un retour,
00:01:38 :parce que j'ai vu que tu l'avais mis sur la communauté,mais peut-être que...Alors c'est la liste gourmande,comme ça les gens peuvent faire un retour en direct ici,et puis peut-être si on a des questions on peut poser,juste tu expliques comment t'as fait etc.
00:02:01 :Ça peut être bien.Je vois déjà que t'as changé ici la couleur des liens tant qu'ils sont pas cliqués,j'ai regardé vite fait tout à l'heure et je me suis dit que c'était pas très lisible,mais là du coup je vois que t'as changé la couleur c'est ça?
00:02:14 :Ouais, ok très bien.Et j'avais vu un petit problème aussi dans le CSS là,il y avait un truc qui se chevauchait je crois,mais t'as dû déjà le mettre à jour non?
00:02:24 :Ici là.Ouais ok.Ouais du coup il y avait une question de Gabriel,t'as fait le front avec quoi, avec Bootstrap, avec un framework,ou t'as tout fait en CSS à la main?
00:02:43 :Je fais pas du Bootstrap, si, si, je m'abuse,mais ouais c'est bien, moi franchement quand j'ai du frontend à faire je le fais en Bootstrap.
00:02:53 :Ok du coup comment on commence?Donc là j'imagine qu'on arrive sur l'accueil.Donc là t'as mis en fait plusieurs cards,bonsoir Pierrot, pour afficher tes infos,je trouve que c'est bien, c'est clair.
00:03:15 :Souvent quand t'as des cartes, tu vois comme ça,souvent l'expérience d'utilisateur il se dit que ça va être des trucs à cliquer.Par exemple moi j'ai l'habitude quand je vois une carte c'est de cliquer dessus,là du coup ça fait des trucs statiques,donc ça peut porter un peu à confusion.
00:03:37 :Après moi je te dis en frontend je suis vraiment une quiche,j'imagine que vous maîtrisez mieux que moi le frontend,mais en gros moi quand je vois une carte comme ça je m'attends à avoir un boutonou un truc que je puisse cliquer.
00:03:55 :Tu vois une carte juste pour décrire quelque chose,moi je le vois bien mais bon si tu l'aimes comme ça laisse le, c'est un truc à toi.
00:04:02 :Donc là en fait tu décris les différentes fonctionnalités,ok, découvrir nos recettes,donc si je fais ça, qu'est-ce qu'on a là,du coup, donc là il y a déjà des recettes qui sont faites,celle là c'est un utilisateur qui les a créées ou c'est toi en tant qu'admintu les as mis dans la base de données?
00:04:44 :D'accord.Mais du coup, si par exemple en fait là je veux m'inscrire,donc là je peux m'inscrire, je ne sais pas si je peux,je me suis créé une adresse comme ça, je peux me créer un compte ou?
00:05:20 :D'accord.Ok, donc là je suis inscrit,ok donc là maintenant tu as changé ici, je vais zoomer un peu,tu as changé ici, tu affiches le nom de la personne qui est connectée,donc ça c'est bien, profil, tu peux aller, ok c'est cool tout ça,tu peux changer tes trucs, franchement c'est top à propos.
00:06:10 :Et donc maintenant si je retourne là dedans et que je vais voir les recettes,maintenant je peux l'ajouter à la liste, ça fait quoi ça quand j'ajoute à la liste?
00:06:25 :Ah oui en fait il m'a mis, ici tu as mis du filtre, ah ouais c'est bien tout ça,tu peux filtrer à propos, ah oui j'avais une question tout à l'heure,le contactez nous, et donc là il te met déjà à la base le truc,si je fais un message, test message depuis le mentorat, envoyer,
00:07:00 :comment tu as géré ça l'envoi d'email?Tu as configuré ton serveur SMTP? Ah oui là c'est pas encore configuré l'email,mais du coup ce que tu vas devoir faire c'est configurer un serveur SMTP,par exemple si tu as un compte Gmail, tu vas devoir définir le mot de passe,
00:07:33 :l'accès SMTP, mais je ne sais pas si Gabriel dans ton tête a fait un vérificateur d'email,tu as configuré ton serveur SMTP dans les Django variables d'environnement,et puis tu fais ton email depuis ton application.
00:07:55 :Oui et pour ça j'allais dire Gmail est très pratique,parce que c'est pas compliqué, il faut que tu actives juste un mot de passe d'application,du coup dans ton fichier d'environnement tu ne vas pas mettre ton vrai mot de passe Gmail,tu vas mettre un mot de passe qu'ils vont te donner.
00:08:13 :Oui un espèce de token.Attends je vais te mettre sur le chat le lien vers mes settings.Oui on va aller voir ça. Christian dit que ça ne marche pas avec Gmail,
00:08:26 :parce qu'il s'est curieux de Google.Oui mais je crois que tu as un truc, il faut autoriser Google à utiliser les applications tierces,ou je ne sais pas quoi, il y a un truc à faire.
00:08:33 :C'est ce que je disais, c'est par rapport au mot de passe justement,tu le réalises et en plus ils donnent un autre mot de passe à part.
00:08:38 :Ah j'ai touché c'est bon, je vous mets le lien.Vas-y, vas-y.Attends, t'as copié carrément le settings là?Ah oui tu mets le lien de ton GitHub.
00:09:08 :Ok donc allons voir ça.Ok donc en fait c'est tout ça ici, ça te a fait Christian,merci Gab pour le truc, c'est normal.Ça Christian t'a fait?
00:09:27 :En gros si t'as pas fait c'est ça que tu devras faire,tu devras configurer ici dans Django, ça c'est des variables que Django connaît,et que tu devras définir, tu vois là par exemple,le email host user et password, ça va être des choses que tu vas récupérervia ton interface Gmail.
00:09:46 :Mais enfin essaye et puis si t'as des problèmes tu poses des questions dessus.J'ai vu passer une autre question dans le chat.Ça ouvre le navigateur par défaut de l'utilisateur.
00:10:01 :Tu veux dire quoi c'est par là?En fait moi j'ai déjà, une fois j'ai fait, c'est moins souhaitable,mais ce que tu peux faire en fait quand tu tapes l'URL mail to test.gmail.com,
00:10:23 :si tu tapes cette URL là, en fait normalement il te lance ton...Ouais c'est tout à fait ça.C'est tout à fait ça ouais, j'ai déjà vu sur des sites où quand je clique,ça ouvre ton...
00:10:41 :J'arrive pas à sortir le mot, ça arrive ton éditeur de mail par défaut.Donc si par exemple t'as Outlook, t'as Gmail, en fait il va te l'ouvrir.
00:10:49 :Dès que t'as, si jamais tu veux pas te faire chier avec définir tes commandes d'email,enfin ton serveur d'email et tout ça, t'as une solution qui peut être de,tu mets un link en fait, un lien hypertexte A, et tu dis en fait ton lien,le href de ton lien, ça va être un mail to et puis l'adresse mail à laquelle tu veux envoyer ton truc.
00:11:16 :Voilà, mail to 2 points.Et ça Christian, si tu veux, c'est une mise en place hyper simple d'envoyer un email,c'est juste que l'utilisateur il va avoir un pop-up, soit il va lui direquelle messagerie vous voulez utiliser, ou sinon s'il l'a déjà configuré,tu sais quand tu fais, tu définis tes applications par défaut,
00:11:36 :dans Windows ou dans Mac ou dans Linux, tu peux lui dire pour mes emails,je veux que ce soit Outlook, donc en fait ça va ouvrir directement Outlook par exemple.
00:11:45 :Donc ça peut être une solution.Bah c'est moins pratique pour l'utilisateur, mais pour le développeur, c'est hyper simple.Mais c'est vrai que sur une application c'est beaucoup mieux d'avoir,comme l'a fait Christian ici,ici en fait c'est beaucoup mieux d'avoir un formulaire ici pour les utilisateurs,il n'a pas à s'emmerder, mais ça peut être une solution,
00:12:41 :ou pensez-y pour une application quelconque, ou quoi, si vous avez besoin,ça peut toujours faire l'affaire.Voilà, du coup j'imagine que...Pardon.Excusez-moi.Et du coup, qu'est-ce qui se passe en fait quand tu as ta liste de course,tu as des ingrédients qui vont avec pour faire ta liste de course, c'est ça?
00:13:04 :Ok, et du coup j'imagine que pour ça dans ton code tu as mis des clés étrangères,des relations many to many pour faire tes ingrédients qui peuvent être à plusieurs recettes,et plusieurs recettes peuvent avoir plusieurs ingrédients.
00:13:31 :Tu as fait du many to many, non?Ok.Bon bah super, franchement félicitations, il est super bien ton code,enfin ton site, et j'ai vu que tu l'as mis sur Python Anywhere,du coup on en avait parlé la dernière fois, ça a été le déploiement...
00:13:52 :Une requête API qui fait le calcul.Ah oui d'accord, ok.Ouais bah tu vois Python Anywhere c'est simple, c'est gratuit,et puis qu'est-ce que j'allais dire, je ne sais pas si tu as vu,mais il ne faut pas oublier d'aller faire un reload de ton site tous les 3 mois je crois,
00:14:10 :pour pas qu'il soit down, parce que tu as...Vu que tu utilises la version gratuite de Python Anywhere, je le vois ici via l'URL,tu dois aller le faire un reload de temps en temps.
00:14:30 :Ouais, bravo Christian, et puis ouais, Bootstrap c'est très beau,je sais pas si vous regardez un peu Benjamin Codd sur Twitter ou YouTube,il crache sur Bootstrap, mais bon lui c'est un développeur front-end,donc c'est normal qu'il crache entre guillemets là-dessus.
00:14:45 :Il est en revanche sur Bootstrap bien.Ouais, ouais, bon je pense après c'est un running gag, c'est pour rigoler,c'est juste que c'est normal de la part d'un front-end de dire que Bootstrap il aime pas ça,parce que lui c'est comme si c'est son métier de développer le front-end,
00:15:01 :il va pas s'emmerder, et puis vu ce qu'il peut faire en front-end,je pense que c'est normal qu'il utilise pas Bootstrap,mais franchement pour faire un truc rapide et tout,ou même un truc propre, Bootstrap c'est super bien.
00:15:14 :Et je sais pas si vous connaissez, mais il y a plein d'autres frameworks comme ça que Bootstrap,je sais que Gabriel en avait déjà parlé, c'est PicoCSS je crois?
00:15:26 :Ouais, mais c'est pas moi qu'en ai parlé à l'origine,c'était quelqu'un de la communauté qu'on avait déjà parlé,et je l'avais appris, je l'avais testé, c'était pas mal ouais.
00:15:34 :Ouais, j'ai vu un message là, je sais plus qui est-ce qui dit c'est responsive,on va tester ça avec F12, comment on fait dans Mac pour rentrer là-dedans?
00:15:49 :Vous savez pour avoir le truc développeur?Tu cliques et tu fais inspecter, clic droit inspecter.Ouais c'est bon j'ai vu, merci.Et donc ici ouais effectivement ça m'a l'air bien responsive,si on change, qu'est-ce qu'on met?
00:16:11 :On va se mettre sur un iPhone 12, avec le petit burger bouton là.Ouais bah franchement c'est top, bravo, félicitations.Donc ouais je vous mets ici, donc là on est sur Bootstrap mais moi j'avais déjà utilisé Bulma aussi.
00:16:34 :Pareil responsive, truc léger.Et t'as utilisé le CDN ou t'as téléchargé le statique chez toi?Ok, bah bonne idée parce qu'en fait le CDN il fonctionne bien,le statique ça peut alourdir un peu le site et le rendre plus lent.
00:17:00 :Bon bah super, est-ce que d'autres ont des questions?Ici t'as fait un mail tout peut-être? Ouais.Ouais, bravo.Du coup c'est quoi la prochaine étape pour toi? C'est peut-être l'envoi d'email via le formulaire?
00:17:28 :Ouais, ok, bravo.Et ton code tu l'as mis sur, ah oui il crée un forum.Ouais, ça c'est un forum type ce qu'a fait Thibaut sur Doxtring en mettant un rocket chatou un truc vraiment le forum que toi tu développes toi-même?
00:17:54 :Ok.Bon bah sinon c'est top.Avec le CDN t'as pas besoin de télécharger les fichiers bootstrap, mais c'est ce qu'il a écrit.Ah pardon j'avais pas vu, il y avait une question de Seb sur le CDN.
00:18:13 :En fait c'est dans ton fichier, dans ton template, dans ton HTML,au lieu de dire où est-ce qu'elles sont toutes tes feuilles de style,tu sais des fois tu donnes le lien vers l'endroit où il y a tes feuilles de style,là tu référencies un URL qui est en fait l'URL, la destination,
00:18:38 :elle est dans les serveurs de bootstrap et t'as directement le CSS2,comme ça t'as pas besoin de le télécharger.Ouais, bah allez-y, profitez de ça et mettez des recettes sur le site de Christian.
00:18:55 :Ah encore une fois bravo Christian.Est-ce que vous avez des questions? Est-ce que vous voulez que...Vous avez des questions sur le truc de Christian ou on passe à autre chose?
00:19:16 :Ouais.C'est moi qui dis qu'il sait pas encore, Christian il sait pas encore comment il va faire le forum.Mais moi ce que je te conseille c'est plutôt d'intégrer une solution type RocketChat comme fait Thibault,parce que gérer un forum ça doit pas être évident quand même.
00:19:36 :Le coder, en tout cas à mon avis il faut pas le coder de...Il y a sûrement des frameworks qui permettent de le faire,ou ça se trouve même Django, il y a des librairies Django qui le font.
00:19:50 :Si on va voir là-dedans.Je pense qu'il y a des choses qui existent, qui sont déjà implémentées, il y a des répos GitHub.Ouais il y a des trucs qui existent, je pense. Après à voir, je sais pas ce que ça donne.
00:20:24 :Ah, je suis plus à l'ancienne.Ouais ouais je pense que c'est un gros sujet ça.Ok, du coup je sais pas si la personne est là, mais il y avait quelqu'un qui posait des questions sur Jison,c'était le pseudonyme, je crois que c'est Konimba, si vous avez vu sur les questions.
00:20:52 :C'est Moïse.C'est Moïse? Ouais mais je crois que... Non, c'est Moïse?Quasiment sûr, ouais.Parce qu'il me semble que c'était une question de Moïse effectivement, mais c'est Konimba qui a réouvert la question.
00:21:05 :Après du coup c'est affiché Moïse, mais en fait c'est pas Moïse. Attends je vais juste vérifier.En fait ouais c'était Moïse qui avait créé la question, mais après c'est... Ah si pardon, t'as raison.
00:21:26 :C'est Moïse Kouman, et après... Mais en fait justement il y avait Konimba qui avait des questions aussi sur le fichier Jison,donc je vais juste en retoucher un ou deux mots, et puis comme ça ça fera un rappel et puis pour aller voir.
00:21:41 :Je sais pas les autres, où est-ce que vous en êtes de la formation, je vois qu'il y a beaucoup de gens ici que je connaisqui sont là depuis longtemps, mais je sais pas s'il y a parmi vous des débutants qui débutent.
00:22:12 :Bon, je débute Django, ok, donc si vous débutez sur Django ça veut dire que vous êtes un petit peu déjà avancé dans Python.Donc peut-être que, je sais pas, est-ce que ça vous intéresse de revoir un petit peu le Jison, de toute façon je vais en dire quelques mots,
00:22:27 :mais bon ça sert à rien que je dise des trucs si vous connaissez déjà.Ok, bon bah j'y vais, de toute façon ça coûte rien.
00:22:40 :Donc en gros un fichier Jison, c'est juste une structure de fichier un petit peu particulièrequi peut être lu facilement avec Python.Donc en fait un fichier Jison c'est souvent des fichiers de configuration.
00:22:55 :Je sais pas si vous utilisez, là depuis quelques temps je me suis mis sur Pythor, mais sur VS Code,toute la configuration elle est faite via des fichiers Jison et vous pouvez même y accéder et modifier vos options via un fichier Jison.
00:23:07 :Mais en fait dites-vous que fichier Jison souvent c'est pour des fichiers de config ou des fichiers d'input qui sont facilement lisibles par Python.Donc en fait un fichier Jison ça démarque comme ça et vous pouvez, il faut le voir comme un dictionnaire.
00:23:22 :Donc name, je m'appelle Jean, j'en sais rien, et en fait dans un fichier Jison vous pouvez mettre tout ce que vous voulez,comme type de structure.
00:23:35 :Donc imaginons ici que je fasse un fichier Jison qui soit une usine de voiture.Donc en fait une usine de voiture, le nom de l'usine ça va être, je mets ça comme ça je peux mettre plusieurs data types,donc le nom ça va être usine des grosses caisses.
00:23:57 :On va dire en fait les modèles qui sont disponibles dans l'usine, on peut dire que ça peut être une liste.Donc là vous voyez je mélange un peu les types de data, là dans mon dictionnaire ici j'ai juste un string,mais là je peux mettre carrément une liste si je veux, donc on me dit qu'il peut faire les Peugeot, les Mazda,
00:24:16 :et puis les Opel par exemple.Et vous pouvez même dire, vous pouvez même imbriquer des dictionnaires.Donc là si je fais info et que là j'imbrique encore un autre dictionnaire, je peux dire l'adresse,c'est dans les infos, je vais avoir l'adresse, qui peut être, je sais pas, je dis une bêtise, ça peut être
00:24:42 :150 de rue Jean, et vous pouvez même encore imbriquer d'autres choses.Donc là on a mis l'adresse, qu'est-ce qu'on a mis, qu'est-ce qu'on peut mettre comme autre type de structure,on peut remettre, je sais pas, le capital, comme ça ça va être un nombre, un capital de 1 million,
00:25:12 :1, 2, 3, 4, 5, 6, et puis on peut même imbriquer un autre truc, qu'est-ce que je peux remettre,on va mettre les dirigeants, ça va être une liste de personnes, on va mettre Didier, Christian,on va dire que c'est la boîte qu'a racheté Christian grâce à son site internet, et voilà.
00:25:39 :On peut faire ça dans un JSON, ouais, ça on va voir si c'est possible, si il le prend c'est pour,non je crois qu'il va pas comprendre en fait, on peut le faire mais à mon avis il faut le mettre comme ça,et après il faut le réinterpréter. Mais je vois ce que tu veux dire, comme ça on peut voir facilement
00:25:56 :les séparateurs de milliers, ça pourrait être intéressant, et donc là on a notre fichier JSON,et ici ce que je peux faire c'est import JSON, et je peux dire withOpen, donc là on va mettre data.json,
00:26:18 :donc là on va le mettre en mode lecture, donc je mets read, as handle, pour dire en gros ça va être mon stream,ça va être les bytes du fichier, et on peut dire qu'on va stocker les datas dans du JSON,donc là on va faire JSON.load, et donc là ce qu'il faut mettre, on a juste le handle pour moi,
00:26:48 :ça devrait être bon, si je fais ça, je vais remplir en interactif, et si je vais voir data,vous voyez en fait que j'ai bien récupéré un dictionnaire, donc je trouve que ce qui est classe c'est que,donc là ça pourrait très bien être un fichier texte, vous pouvez l'éditer n'importe où quand vous voulez dans un fichier texte,
00:27:18 :à partir d'un fichier texte vous pouvez facilement apporter un dictionnaire grâce au module JSON.Donc là par exemple dans mon data, c'est vraiment un dictionnaire, donc je peux aller voir les clés,je peux dire data name, donc là j'ai usine des grosses caisses, je peux aller chercher les infos,
00:27:40 :et les infos c'est lui-même un dictionnaire, donc si je fais info.case, vous voyez que c'est lui-même un dictionnaire,donc je peux aller lui dire, va me chercher les dirigeants, et donc là j'ai dit des Christians.
00:27:55 :Donc voilà un peu pour les JSON, et ce que vous pouvez faire aussi, c'est vous dire,en fait je veux aussi stocker mon dictionnaire dans un fichier JSON externe,donc là vous pouvez dire, on va créer un nouveau dico, donc on va dire dico,là je vais aller plus rapidement, je vais juste créer nom,
00:28:19 :et puis on va dire, on va imaginer que c'est un prof, et puis on va dire que ça c'est le prof,et les élèves, on va mettre une liste de noms,Harry, Jade et Mathieu.
00:28:54 :Ok, donc là si je regarde dico, et que maintenant, au lieu de faire un load, je vais faire un dumps,parce qu'en gros je veux balancer toutes mes datas dans un autre fichier,donc pareil j'utilise le context manager, withopen, je vais mettre new.json,
00:29:11 :et là cette fois-ci je le fais pas en mode lecture mais je le fais en mode écriture,donc write as handle, et maintenant je balance tout, donc 1, 2, 3, 4, je fais json.dumps,
00:29:24 :c'est d'abord, je sais plus si c'est d'abord l'objet, je pense que c'est d'abord l'objet,et ensuite handle, c'est peut-être pas dumps, c'est juste dumps.Voilà, et donc maintenant si je vais voir, ici j'ai bien stocké, j'ai bien créé un nouveau fichier,donc ça peut être intéressant si par exemple vous avez, je sais pas si vous avez une API ou quoi,
00:29:58 :et que vous téléchargez, souvent quand vous utilisez les API, vous avez, quand vous faites une méthode get,vous récupérez vos résultats sous format json, donc après si vous voulez le manipuler,c'est simple, ici vous faites comme ça, withopen, read, et puis vous stockez tout ça dans un objetdictionnaire Python que vous pouvez manipuler ensuite, et que Python va comprendre.
00:30:21 :Voilà un peu pour le rappel sur les fichiers json, en fait la personne qui posait la questiondisait mais c'est quoi exactement un fichier json, en fait c'est rien de plus qu'un fichier texteun petit peu formaté d'une manière à ce que Python peut comprendre, tu vois.
00:30:34 :Dès qu'il va voir acolade, en fait ici il va comprendre que c'est un fichier json,et tout ce qu'il prend dedans, bah là il va prendre la clé et la valeur.
00:30:45 :Bon voilà, je sais pas si vous avez des questions là-dessus, est-ce que vous voulez qu'on passe à la suite?Ok bon bah s'il n'y a pas de questions, on va passer, tu peux mettre des petites,ouais tu peux, tu peux tout à fait, ça se fait facilement, et je sais plus, il y avait, je crois que,
00:31:16 :ouais exactement merci Christian c'est ce que je cherchais, salut The Crow, TinyDB ouais,en fait tu peux faire des bases de données, donc tiny, petite, avec du json uniquement.
00:31:30 :Ça marche bien, c'est une bonne structure de données. Oui oui il y a un truc dessus sur Dockstring avec TinyDB.Mais oui considère que c'est des petites bases de données, après quand ça devient trop lourd,l'indexation et tout ça, elle n'est pas optimale.
00:31:53 :Ok donc on va juste voir un petit peu les dockers, et puis,Docker, démo, et après on essaiera de l'appliquer à notre projet.Ok donc là je me suis créé un nouveau projet, et on va y aller, on va commencer rapidement, je pense, qu'est-ce que,le mieux pour les bases de données, 10 000 lignes, oui ça reste petit pour une base de données.
00:32:33 :Il ne faut pas seulement voir la taille, il ne faut pas seulement voir la taille dans une base de données,il faut aussi voir la concurrence. En fait avec un fichier json par exemple, donc avec TinyDB,
00:32:44 :tu ne pourras pas avoir plusieurs utilisateurs qui accèdent, qui lisent et qui modifient le fichier json.Parce qu'en fait une fois que le fichier est ouvert par quelqu'un, tu ne peux pas le modifier, c'est un peu, tu sais,si tu travailles sur des réseaux locaux avec des collègues sur un fichier Word, une fois que quelqu'un a ouvert le fichier Word,
00:33:01 :tu ne peux plus aller le modifier. En revanche avec des bases de données comme MySQL, Postgre ou MariaDB,plusieurs personnes peuvent accéder en même temps à la base de données parce que ce n'est pas un fichier en fait.
00:33:17 :Donc ça déjà, c'est là qu'est l'intérêt de la base de données, après tu as le versionning etc.Mais il ne faut pas seulement voir la taille quand tu parles de base de données, ça joue mais bon 10 000 lignes pour moi ça reste petit.
00:33:52 :Donc ça dépend vraiment de ton projet mais d'expérience moi c'est MySQL ou Postgre.Dans Python Anywhere, si vous voulez utiliser une base de données c'est MySQL uniquement, vous ne pourrez pas utiliser Postgre parce qu'il faut payer.
00:34:11 :Il faut avoir un compte payant si vous voulez changer de base de données mais MySQL ça marche très bien.Alors qu'est ce qu'on va faire? En fait SQLite, je ne sais pas si tu peux sur Python Anywhere avoir un SQLite, en tout cas ce n'est pas conseillé.
00:34:41 :Mais ouais à vérifier. Est-ce que vous connaissez un peu Docker? Est-ce que vous savez ce que c'est un conteneur Docker?Alors en fait un Docker il faut le voir, en fait à la base ça a été développé il me semble par les ingénieurs chez Google, c'est pour faciliter le déploiement.
00:35:05 :En fait quand vous développez un script chez vous, que vous le faites fonctionner etc, en fait il fonctionne bien sur votre environnement à vous.Et il y a la fameuse situation où vous développez quelque chose, ça marche bien chez vous, vous le donnez à un ami ou un collègue et ça ne marche pas chez lui.
00:35:33 :C'est de pouvoir déployer facilement non pas seulement le script mais aussi tout l'environnement qui permet de faire fonctionner le script.Donc imaginez par exemple ici vous avez, on va créer un script, on va dire, on va même créer, donc là on est dans notre projet,on va créer un nouveau dossier qui s'appelle app, dans l'app on va créer un fichier qui va être myscript.py et puis on va dire que dans ce fichier,
00:36:06 :on va faire import random as pd et puis on va juste faire, qu'est-ce qu'on va mettre, on va mettre import random as rdnet on va mettre un import that time. Ok donc en fait ce qu'on va faire, on va dire, là imaginons que vous créez votre script,
00:36:47 :vous voulez faire votre script, donc là déjà ce qu'il va falloir faire c'est installer Pandas, donc pip install pandas et les autres ils sont déjàinstallés par défaut donc il n'y en a pas besoin et on va dire qu'en fait à chaque fois qu'on va exécuter le script, on va faire df,
00:37:08 :on va d'abord créer le data, on va dire rdn.randit entre 1 et 1000.Donc là on va juste créer un dataframe cori, pd.dataframe data, ok donc là on est content et si on print df,
00:38:02 :qu'est-ce que ça va donner, ok je ne vais pas donner d'index.Et on va le mettre en, on va juste afficher là transposé, ça sera plus propre. Ok donc là en fait j'ai créé un dataframe,
00:38:41 :on va lui dire df égale df, bon ça on s'en fout, ne faites pas attention à ça, c'est juste pour créer le dataframe.Donc là on a créé un dataframe avec un truc aléatoire et en gros à chaque fois ici, donc là vous voyez le premier c'est 133,si je relance ça sera pas le même, ça sera 389 et donc ce qu'on va dire c'est qu'on va stocker notre dataframe sous csv et on va lui donner
00:39:27 :la date d'aujourd'hui, on va dire datetime.no.csv et normalement il va nous stocker ici, donc là voilà il m'a fait un fichier csvavec mon dataframe et avec la date d'aujourd'hui. Ok donc là imaginons c'est notre script, je n'utilise jamais import module,
00:39:59 :en fait en termes d'usage c'est recommandé dans les documentations et dans l'app d'utiliser cette manière d'importer.Parce qu'en fait si tu fais import module as, en fait avec ça, ça c'est un alias que tu définis toi-même, donc quand t'es dans ton codeaprès tu te retrouves plus facilement. Et puis voilà c'est comme ça que c'est recommandé d'écrire, je t'avoue que j'ai jamais eu vraiment
00:40:35 :de problème avec l'un ou l'autre, mais j'ai pris l'habitude de l'écrire comme ça. Donc ça c'est toi qui définis toi-même et tu vois iciau lieu de faire, si j'avais juste fait import random j'aurais dû taper random et tout à chaque fois, là je tape juste un alias,c'est un peu plus simple. Ok donc là on est content on a notre script, donc je vais dézoomer, on s'en fiche, on n'a pas besoin de tout voir.
00:40:59 :Et si, ouais exactement c'est un alias. Imaginez maintenant que je veuille distribuer ce script là à un ami. Donc ça je le vire,si je veux distribuer ce script là à un ami ça va être un peu chiant, il va falloir d'abord que je fasse un pip freeze requirements.txt
00:41:50 :Donc ce qu'on peut faire en fait, on va créer un fichier docker, on va le créer, où est-ce que je vais le créer?Le requirements ici je vais le mettre dans mon dossier app, c'est plus propre parce que c'est les requirements de mon app,et ici on va se créer, attendez je réfléchis où est-ce que je vais le mettre, je vais plutôt le mettre, je vais le mettre ici.
00:42:20 :On va créer un docker file, donc il faut que le nom du fichier docker file soit comme ça, docker file, pour qu'il soit reconnu,et là en fait ce qu'on va mettre, c'est un peu comme si vous créez une machine virtuelle avec tous les environnements nécessaires pour que votre script fonctionne.
00:42:47 :ça veut dire qu'il va me créer un espèce d'environnement avec python déjà installé. On pourrait faire par exemple si vous avez,on pourrait juste dire from ubuntu, donc là il va me créer un environnement ubuntu, je pense pas qu'il y aura python déjà installé,mais il y aura toutes les commandes de base de ubuntu. Donc moi c'est une application python, donc je commence avec python,
00:43:30 :et en fait je veux copier le requirements qui se trouve dans mon app. Donc je fais, ça va être app requirements,et en fait ce que je dis ici c'est que là mon docker file est là, donc je lui dis va chercher dans mon dossier app, tu vas me chercher requirements.txt
00:44:05 :une fois que tu as copié, que tu me fasses un pip install R requirements.txt. Donc là ça veut dire qu'il va avoir tout installé,je vais vous montrer après, on va aller rentrer dans l'instance du docker créé. Il va me faire ça, et maintenant ce que je veux c'est qu'il me copie,
00:45:02 :je lui dis installe les requirements, comme ça Python, ah oui pardon excusez moi, désolé. Donc je, ok, vous n'avez pas dû suivre au début.Donc là je vais lancer la commande d'installer le requirements, et ici tout ce qu'il y a dans le dossier app, tu me le copies dans un dossier app de mon instance,
00:46:10 :parce qu'en fait l'image c'est juste un peu comme un screenshot, c'est un peu comme si vous faisiez une machine virtuelle, vous téléchargez Ubuntu,l'image ISO d'Ubuntu ou quoi que ce soit, là on a juste créé l'image. Ouais, Docker il faut l'installer. En fait il faut installer juste le Docker,
00:46:49 :et maintenant je peux aller rentrer dans mon instance, donc ça PyCharm il vous permet de le faire un peu, il vous le facilite, mais je vous montre en lignede commande. Et donc là voilà, maintenant je suis dans, ici je suis bien dans mon instance Docker que j'ai créé, donc si vous voyez si je fais ls,
00:47:37 :Docker, et que j'ai créé l'image Docker, je sais qu'elle fonctionnera exactement pareil sur le PC de la personne à qui j'ai distribué mon image.Que ce soit un Linux, un Windows ou un Mac. Parce qu'en fait, Docker, bon ça marche, c'est du Linux, mais en fait Docker il va créer un environnement
00:48:14 :de faire des commandes automatiquement au démarrage du container. Donc en fait là au container, à chaque fois qu'il va démarrer le container, si lecontainer n'est pas déjà créé, il va installer les requirements et votre application sera fonctionnelle. Vous voyez ici si je fais python myscript et que
00:49:03 :container pour interagir avec le script, mais si dans votre image Django, il lance un serveur, après vous pouvez accéder à ce serveur de n'importeoù. Le Docker il fonctionne quand même, il fonctionne en background et vous pouvez atteindre l'application via n'importe quelle URL. Et il y a des choses
00:50:26 :c'est on va utiliser Docker Compose. Parce qu'en fait Docker Compose, ça permet de déployer plusieurs Dockers en même temps. Donc imaginez que vous avezici vous avez cette image là de Docker pour votre script, mais si par exemple vous avez une base de données en plus etc. en fait il vous faudra une autre
00:50:58 :Docker et de l'autre côté vous avez Docker Compose qui lui va lancer et configurer des réseaux etc. pour que vos containers Docker puissent communiquerentre eux facilement. Donc je vais vous montrer un peu le principe de Docker Compose et en plus vous verrez qu'avec Docker Compose on va même pouvoir
00:51:37 :Je vais réanimer mes images. Ok, donc là maintenant qu'est-ce qu'on peut faire? Je pense que je vais aller directement sur l'autre projet.Donc là c'était juste pour vous montrer un peu le concept du Docker. Ah oui, donc peut-être si vous voulez voir la ligne de, parce qu'en fait là je l'ai fait via
00:53:11 :en fait, et je vais lui dire, ça va être DockerDemoImage, il faut d'abord que je le mette je pense.Ok, donc là maintenant si je fais Docker image ls, je lui liste toutes les Docker images que j'ai, donc là moi maintenant je vais vouloir lancerce conteneur avec cette image là. Donc je vais faire Docker run, je mets it pour dire interactif parce qu'en fait une fois qu'il a été lancé,
00:54:30 :Ça n'a pas fonctionné, pourquoi?C'est le nom du fichier. C'est quoi? Tu as mis imageDemo ou l'inverse, je ne sais plus. Ah ok, merci, je vais retenter.
00:55:14 :Du coup, DockerImageLS c'était ça, DockerDemoImage, et moi j'ai mis l'inverse? Ah ouais bien juste.Je ne vais pas me planter.Super, merci, c'était ça. Et donc là vous voyez, je suis retourné dans mon instance, donc là je peux aller faire tout ce que je veux,
00:55:50 :Merci Salvatore.Ok, donc on va essayer d'aller voir vite fait sur, ça va être peut-être un peu juste, je vais vous montrer sur un que j'ai déjà fait,ça ne sera plus, parce que là on ne va plus avoir beaucoup de temps.
00:56:47 :Donc en fait, Docker Compose c'est juste un moyen de lancer plusieurs containers à la fois.Donc en fait ça fonctionne de cette manière, on lui définit les services, donc les différents services qu'on va vouloir.
00:57:07 :Donc on va lui dire, ici là je fais build, contexte, etc. ça on verra la prochaine fois.Mais en gros je lui dis, tu vas chercher l'image qui est dans le dossier, en fait l'image ici je l'avais faite ici, là vous voyez Docker,c'est un peu la même chose que ce que je vous ai montré tout à l'heure.
00:57:41 :Donc là ça va être le port de mon PC à moi, et là ça va être le port de l'instance Docker.Ici ça va être la commande qu'on va lancer quand on est en développement, donc c'est ce que je vous disais tout à l'heure, c'est du Junicorn,c'est plus du runServer, qui est en fait un serveur de développement.
00:57:59 :Ici on peut lui définir les fichiers d'environnement, et en fait il va prendre le fichier d'environnement,il va directement les foutre dans toutes les variables d'environnement.
00:58:08 :Donc là tu sais, vous savez quand on fait os.environ.get avec les variables d'environnement,ça il va les mettre dans les variables d'environnement.Là ici je lui dis DependsOn parce qu'en fait le backend Django ne peut pas fonctionner tant qu'il n'a pas la base de données qui est lancée.
00:58:25 :Donc c'est pour ça que je lui dis DependsOn, et là c'est mon autre service, ça c'est un volume que je vous montrerai,c'est pour faire persister les datas quand on allume et quand on éteint le container.
00:58:38 :Donc là c'est bon, là j'ai défini, si je lance juste ça, je lance mon application Django.Oui oui tu peux, ah tu veux, attends je répondrai à la fin parce que là du coup c'est plus la même question.
00:58:56 :Ici là vous lancez votre service de base de données, donc là je lui dis images MySQL,donc là en fait vous voyez c'est pas moi qui ai développé ça, en fait il y a, non pas de soucis Christian,l'image ici c'est un truc qui existe déjà.
00:59:15 :En fait il va aller chercher l'image MySQL sur votre PC, si vous ne l'avez pas il va aller la télécharger lui-même via le,automatiquement en fait sur le Docker Hub, grâce à Docker et à la communauté Docker Hub, il y a l'image MySQL qui existe déjà.
00:59:33 :Restart always, parce qu'en fait dès que ça crash vous voulez que ça recommence, vous voulez que ça se relance,bon là c'est pareil on définit les ports, les volumes, etc.
00:59:42 :Donc là en gros avec juste ça, avec juste ça vous définissez votre backend et votre base de données.Donc il va lancer une image ici qui correspond au backend et une image qui correspond au MySQL.
00:59:54 :Et en fait le fait d'utiliser Docker Compose, ce qui est super c'est que ça les met automatiquement sur le même réseau.Donc vous n'avez pas à vous embêter à dire, bah merde quelle est l'adresse de mon, vous savez quand vous déployez un projet sur Python Anywhere,il va vous demander un host, le host de votre base de données, vous savez c'est un espèce d'URL en fait.
01:00:16 :Et donc grâce à Docker Compose, vous savez que l'host dans lequel est votre image de base de données, il va s'appeler db.Ça ne va pas être du HTTP, je ne sais pas, votre nom d'utilisateur, Python Anywhere, etc.
01:00:30 :Ça va juste être db.Bon ça je vous montrerai aussi la prochaine fois comment on fait pour définir ça.Et ici j'avais juste moi rajouter une autre image qui permet d'avoir un phpMyAdminpour faire l'administration de la base de données via l'interface phpMyAdmin.
01:00:46 :Après ici, bon ça je vous montrerai la prochaine fois, je ne vais pas rentrer dans le détail là parce que c'est des gros trucs.Mais en gros, voilà, j'ai essayé un peu de vous introduire les concepts du Docker, un peu le Docker Compose,et puis je vous montrerai vraiment la prochaine fois qu'est-ce qui se passe quand on lance et puis...
01:01:11 :En fait moi je voulais au début qu'on fasse sur le projet qu'on a fait la dernière fois,je voulais qu'on crée le Docker Compose, etc.
01:01:20 :Mais ça m'a pris plus de temps que prévu pour expliquer des trucs et tout.Mais on pourra faire ça la prochaine fois.Maintenant que vous avez un petit peu les bases de Docker et Docker Compose,on peut avancer petit à petit et on essaiera de faire le déploiement la prochaine fois avec Docker Compose.
01:01:38 :Voilà, j'espère que je ne vous ai pas trop perdu parce que je sais que quand on découvre Docker,ça paraît hyper compliqué tout ça, mais en fait il suffit de connaître un peu les syntaxes,mais après vous verrez que c'est vraiment hyper pratique.
01:01:54 :Et même, utiliser Docker, pas sur des trucs que vous, vous avez déployé, mais je ne sais pas...Vous voyez en fait là par exemple PHP MyAdmin...
01:02:03 :Je ne sais pas si vous avez déjà essayé de déployer un PHP MyAdmin vous-même,mais c'est un bordel parce qu'en fait il faut lancer un serveur Apache,donc il faut créer un serveur, il faut le connecter, etc.
01:02:19 :C'est un bordel complet, alors que là j'ai juste à télécharger l'image et à lancer le container,et voilà tout roule. Donc je ne sais pas si j'ai réussi à vous montrer l'intérêt que ça peut avoir,
01:02:34 :mais si vous faites du déploiement, donc là Docker, Docker Compose, c'est vraiment du DevOps,c'est tout ce qui est déploiement et optimisation des développements, etc.
01:02:44 :C'est vachement intéressant.Et je ne pense pas qu'en une introduction comme ça, si vous n'avez jamais vu, vous pouvez comprendre,peut-être que vous ne captez pas bien l'intérêt, je ne sais pas, dites-moi peut-être le contrairedans les commentaires, dans le chat, mais vraiment c'est hyper intéressant.
01:03:05 :Retenez déjà que Docker, vous pouvez déployer facilement un environnement,vous déployez votre environnement et puis vous pouvez même lancer des commandes au démarrage de l'image,comme ça vous avez l'utilisateur à qui vous donnez votre image, il n'a pas à installer des choses,il n'a pas à faire des pip installs, requirements, etc. Il a juste son image et il peut la lancer facilement.
01:03:27 :Ok, bon désolé si ce n'était pas hyper clair, j'espère que quand même ça vous a intéressé.Et puis, je ne sais pas, dites-moi ce que vous aimeriez voir la prochaine fois,est-ce que vous voulez qu'on continue à regarder un peu ça, le Docker, Docker Compose,ou si vous trouvez que c'est trop obscur et que vous ne voyez pas d'intérêt, il n'y a pas de souci.
01:04:00 :Ok, bon, je continue un peu là-dessus, on continuera.Je pense que du coup la prochaine fois, si on fait du Docker Compose sur le projet qu'on a fait la dernière fois,on sera déjà pas mal, ça fait déjà deux ou trois fois que j'en parle de Docker,après on clôturera le sujet pour ne pas rester tout le temps sur le même sujet,
01:04:27 :mais du coup la prochaine fois je ferai encore un petit peu de ça.Et puis voilà, désolé Salvatore, après en plus comme Thibaut il n'est pas là en ce moment,j'essaye de faire des trucs un petit peu qui mixent, j'essaye de parler un peu des fichiers JSON et tout ça,
01:04:52 :mais voilà, désolé si tu étais perdu, après l'idée comme d'habitude,ce n'est pas de savoir le refaire juste quand on sort, mais c'est de connaître et de découvrir ça ensemble.
01:05:03 :Et aussi, qu'est-ce que j'allais dire, là le Docker et le Docker Compose c'est super bien si par exemplevous avez un serveur qui est sur le cloud et que vous voulez déployer vos applications,comme ça vous développez tout en local chez vous, et vous avez juste à balancer votre image
01:05:24 :qui a tout compacté, tout votre environnement, vous avez juste à déployer votre image.C'est un peu comme un GitHub, au lieu de faire un GitPool de votre code,vous allez juste faire un pool de votre image et tout sera déjà dedans.
01:05:41 :Toute votre arborescence etc. vous n'aurez pas à vous emmerder, vos fichiers d'environnement etc.ils seront dedans. Donc c'est ça aussi qui permet de faciliter le déploiement.
01:05:51 :Il faut voir production en fait, il faut imaginer qu'après ça part en production.Voilà, pour moi c'est bon, si vous avez des questions n'hésitez pas,et si vous avez des sujets que vous aimeriez aborder,peut-être que ça serait intéressant de voir un peu le TinyDB, je ne sais pas ce que vous en pensez,
01:06:14 :mais je trouve que c'est pas mal pour faire des petits projets TinyDB.Je ne sais pas si ça peut vous intéresser, mais voilà, pourquoi pas.
01:06:23 :Ah oui, excuse-moi Christian, tu fais bien de la reposer.Et puis n'hésitez pas, si vous voulez quitter le Mentorat, il n'y a pas de souci, je ne vous retiens pas.
01:06:35 :Je ne veux vraiment pas que le Mentorat vous le voyez comme un truc chiant et obligatoire,et que vous venez et vous repartez quand vous voulez.
01:06:44 :On n'est pas dans une salle de classe, faites vraiment ce qui vous plaît,il ne faut vraiment pas que ça soit chiant pour vous de dire, ah putain jeudi soir j'ai le Mentorat,j'espère que ce n'est pas ce que vous vous dites.
01:06:54 :Mais si jamais c'est ça, ne venez pas, franchement il n'y a aucun souci,s'il n'y a qu'une personne, il n'y a qu'une personne, moi ça ne me dérange pas.
01:07:03 :Du coup, la question pour ta base de données SQLite, merci pour vos retos.Non, en fait, malheureusement tu ne pourras pas transposer facilement,enfin facilement si, tu pourras le faire, mais tu ne vas pas pouvoir dire,tout ce qu'il y a dans ma SQLite, je le mets dans mon MySQL.
01:07:25 :En gros, tu vas devoir, je pense qu'il y a des trucs qui te permettent d'exporter,avec ton SQLite, tu peux, par exemple, si tu as un logiciel comme DB Browser,ou des choses comme ça, pour voir ta base de données,tu peux l'exporter et tu as des commandes qui te permettent,
01:07:45 :depuis MySQL, de l'importer.Donc c'est possible de transférer tes données de SQLite à MySQL,mais tu vas peut-être suer un petit peu pour le faire.
01:07:58 :Moi je l'avais fait une fois, mais c'était il y a longtemps,depuis je n'utilise plus SQLite.Moi depuis que j'ai découvert Docker, il y a un ou deux ans,je n'utilise plus le SQLite, etc.
01:08:11 :J'utilise directement les bases de données en MySQL,même quand je suis en développement, parce qu'après,comme ça j'ai plus de problèmes, parce qu'en fait on se rend compte souventde problèmes une fois qu'on passe en production,parce que voilà, on passe sur du MySQL,on n'avait pas pensé à développer le script pour que ça marche avec du MySQL,
01:08:29 :alors qu'en fait en production ce sera toujours ça.Donc je fais tout le temps en MySQL ou en Postgre ou autre,je n'utilise plus trop le SQLite,mais je sais que tu as des trucs pour exporter ton SQLiteet importer du MySQL.
01:08:46 :Ouais, tu peux, en fait tu vas dans Python Anywhere,tu as un truc pour aller voir ta base de données.En fait ce que tu peux faire c'est,attends, je vais aller voir là-dessus.
01:09:06 :Ouais, t'as l'onglet database.Ouais, déjà tu l'as déjà vu l'onglet database.Salut Salvatore, bonne soirée.Tu vas dans l'onglet database de ton Python Anywhere,tu te connectes dessus et normalement tu vas tomber sur une invite de commande maestuelle.
01:09:31 :Et en fait après ce que tu peux faire,tu peux faire des exports comme ça,MySQL dump le nom de ta base de données,et puis tu dis le nom du fichier dans lequel tu veux.
01:09:41 :Tu vois, t'as ce type d'export possible.Non, en fait tu peux ouvrir,attends je vais essayer d'aller ouvrir un truc,un Python Anywhere que j'ai chez moi.
01:10:01 :Ah bah t'as trouvé dans les files.Ouais mais du coup ça va être, quoi c'est du,parce que c'est pas un fichier en fait le MySQL, c'est un serveur,à moins que t'es du SQLite.
01:10:21 :Mais c'est pas ça que tu veux toi,parce que j'imagine que si tu l'as déployé sur Python Anywhere,merci Jonathan, bonne soirée.Tu peux avoir du SQLite, mais normalement c'est pas ça que tu veux.
01:10:34 :Et tu vois ici dans les databases,ouais mais il faut que ce soit, c'est payant si tu veux du Postgre,tu vois ici, Upgrade Required.
01:11:01 :Si tu vas là dans ta base de données,tu vois il t'ouvre une fenêtre de commande,et là t'es dans ta base de données.Enfin t'es dans une invite de commande MySQL.
01:11:12 :Donc là si tu fais, je crois que c'est show tables,tu vois tu peux afficher toutes tes tables etc.Et en fait là tu fais,si t'as vu tu vois tu te retrouves dans un truc comme ça,je remontre si vous avez pas vu, show tables,donc là t'es vraiment dans un prompt MySQL,
01:11:36 :donc là tu peux afficher tes trucs,et tu peux du coup faire des commandes de ce type là je pense.Merci Seb, bonne soirée.Voilà, je connais pas par cœur,mais je pense que tu peux faire ces trucs là dans un fichier,après tu vas récupérer un fichier,tu vois ici, source machin,
01:12:04 :tu vas réfléchir un fichier SQL,et après faudra peut-être faire des scriptsqui te permettent de balancer tes SQL dans ton MySQL.Mais bon je te l'accorde, ça va être un petit peu chiant.
01:12:17 :Merci Raphaël, bonne soirée.Mais c'est possible, y'a aucun problème,c'est possible, j'ai déjà fait.Parce qu'en fait, juste là Christian,ta base de données c'est quoi, c'est du...
01:12:36 :t'as un fichier SQLite dans ton Python Anywhere?Merci Jean-Phil, ciao.Oui d'accord, donc t'as pas utilisé le MySQL de Python Anywhere?Ah oui si, je me souviens quand tu déploies,tu peux utiliser le DB, le SQLite 3 effectivement.
01:12:57 :Oui bah là tu peux aller le chercher facilement dans tes files.Là tu le télécharges, donc là c'est tout simple.Et après tu peux tout balancer dans un MySQL,mais là ce qui est chiant avec le compte gratuit de Python Anywhere,c'est que tu ne peux pas accéder autrement
01:13:17 :que via cette interface là dans ta base de données.Tu pourras pas y accéder via un script externequi est sur ton PC ou un SSH ou quoi que ce soit.
01:13:27 :Et ça du coup ça va t'empêcher de faire facilement le transfert.Mais bref, je te laisse un peu regarder,et puis si t'as des questions on pourra essayer de t'aider.
01:13:43 :Bon bah voilà, je pense qu'on peut s'arrêter là.Ouais bah si tu veux, si t'as des questions.En fait moi je suis en CDI, donc j'ai un boulot à côté,et j'ai créé un statut d'auto-entrepreneur assez facilement.
01:14:14 :Tu peux le faire facilement,donc si t'as des questions je pourrais t'aider là-dessus.Bah ouais, je te laisse regarder Christian,parce que là je pense que ça va être long.
01:14:28 :Essaye de regarder un petit peu, et puis si t'as des ennuis tu me dis.Mais je te dis que ça va être un petit peu chiant de transférer le SQLite vers le MySQL.
01:14:39 :Parce qu'il faut changer dans tes settings et tout ça,là tu peux pas, là faut changer le chemin de ta database etc.Il y a plein de choses à changer dans le settings.
01:14:49 :Ouais Gabriel, moi aussi j'avais fait, j'avais recommencé, c'était plus simple.Ouais, les settings de toute façon tu vas être obligé de les refaire.Et The Crow, du coup c'était toi qui posais la question.
Aucune occurrence trouvée pour « ».