Session du 19 octobre 2023 à 20h00
Développement Web & Frameworks
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
Premiers pas avec Firebase et Streamlit
Au programme : introduction à Firebase.
On verra les points suivants :
1) Création du projet et de la Database
2) Utiliser l’authentification de Firebase
3) Implémentation dans Streamlit
4) Fonctionnalité de mot de passe oublié avec Firebase
00:00:00 :OK, good job.Allez, tant que les gens arrivent, je vais ouvrir tout ce que j'avais mis.Salut Gabrielle.Salut, est-ce qu'on m'entend ? Est-ce que mon micro fonctionne ?
00:00:54 :Oui, ton micro fonctionne.Magnifique.Oh oui.Ouais, le terminal c'est génial en fait.Ouais, c'est vrai que ça change pas mal.Déjà, le suivi de commandes de base sur Windows, j'ai jamais compris, j'ai jamais réussi.
00:01:30 :Du coup, j'avais git bash, c'était déjà sympa.Mais là, le suivi de Ubuntu, tu peux tout installer par la ligne de commande, c'est vraiment bien.
00:01:41 :Ouais, c'est vrai que c'est super.OK, je vois que Thibaut il est là, mais c'était juste pour vérifier que ça fonctionne bien, j'imagine.Tu as des choses à dire en particulier, Thibaut ?
00:01:55 :OK.Ouais, ça a l'air de fonctionner.Après avoir l'enregistrement, je ne vois pas pourquoi ça change.Parce que du coup, c'est le même lien tout le temps.
00:02:15 :Ce sera tout le temps le même code Google Meet.OK, merci Thibaut.On va voir ce qu'on arrive à faire.Par rapport au terminal de macOS...
00:02:36 :Alors en fait, Ludovic, pour répondre à ta question, macOS et Ubuntu...Enfin, je vais essayer de ne pas dire de bêtises.Ubuntu, c'est une distribution Linux, il y en a plein.
00:02:50 :Genre CentOS, il y en a vraiment plein.Debian et tout ça sont des distributions Linux qui sont basées sur un kernel Linux.Et en fait, Linux c'est un OS, un système d'exploitation, comme les macOS et Windows OS.
00:03:11 :Sauf que macOS et Linux sont des systèmes Unix.Donc en fait, c'est des systèmes d'exploitation qui sont...A la base, ils ont été développés...A l'époque, je pense, dans l'histoire de l'informatique,c'était pour pouvoir gérer plusieurs utilisateurs sur des terminaux différents.
00:03:31 :Parce qu'en fait, maintenant on appelle ça...Quand vous avez une commande sur...Quand vous avez une invite de commande sur l'ordinateur, ça s'appelle un terminal.
00:03:41 :Notamment avec Ubuntu.C'est historiquement...Parce qu'en fait, avant, il y avait le système d'exploitation qui était distribué.C'est-à-dire, il était sur un ordinateur central.Et les utilisateurs accédaient via des terminaux à ce...
00:04:02 :A cet ordinateur central.Je ne suis pas expert en architecture Linux, etc.Mais c'est un peu...Et du coup, on appelle les systèmes Unix.Les OS MacOS et Linux sont des systèmes Unix.
00:04:18 :Donc ils ont un peu la même origine.C'est pour ça qu'on retrouve un peu les mêmes commandes, etc.Chez les deux.Et puis c'est un peu la même manière de fonctionner quand vous vous retrouvez dans le terminal.
00:04:28 :Je crois qu'il y a des...Attendez, parce que j'ai un problème là.Il y a des gens qui lèvent la main, non, Gabriel ?Ah ouais, c'est un truc en force.
00:04:41 :Parce que j'ai l'impression que Thibaud, dans ses tutos,il ne fait pas trop de différence entre les commandes Mac et Ubuntu à chaque fois.Oui, oui.
00:04:51 :C'est plutôt pour les deux à chaque fois.Quasiment, oui.C'est vraiment la même chose.Je crois que...Franchement, moi, jusqu'à maintenant, la seule différence que j'ai vue,c'est le package manager sur Linux.
00:05:05 :Sur Linux, c'est le fameux apt-get, alors que sur macOS, c'est plutôt bro.Mais sinon, à part ça, la gestion de package,toutes les commandes, etc, sont les mêmes.
00:05:17 :C'est vraiment le même système Unix.C'est pour ça que c'est le même cœur.C'est pour ça que c'est la même chose.Et honnêtement, oui, à part l'architecture de fichiers qui est différente,mais sinon, c'est la même chose.
00:05:27 :Voilà.Je vais virer ma tronche.Pas besoin.Avec plaisir, Ludo.Après, j'imagine que dans la communauté, il y a des admins systèmes, etc,qui s'y connaissent vraiment beaucoup, beaucoup plus que moi.
00:05:50 :N'hésitez pas à en discuter aussi dans la communauté.Voilà, je ne sais pas.Dans le chat, si vous avez d'autres questions,Gabriel, si tu as des retours à faire à part...
00:06:03 :Je pense que pas mal de gens l'ont vu,que t'as eu un petit problème quand t'as désinstallé Python.Je ne sais pas si tu veux dire quelque chose.
00:06:12 :Surtout...Ah oui, c'est un peu nouveau.J'ai eu Linux il y a plus de 15 ans, je crois.Quelqu'un me l'avait installé et je n'avais rien touché.
00:06:21 :Parce que Windows Vista, c'était de la merde à l'époque.Bref.Donc là, je suis sur partie zéro.J'ai installé ça, Ubuntu, sauf que j'ai voulu désinstallerla version Python 3.10 qui était de base.
00:06:33 :Parce que je me suis dit, je vais installer la 3.11,ça ne me sert à rien d'avoir la 3.10 en plus.Parce que là, j'ai vu que ça...
00:06:38 :Déjà, quand tu fais un petit twist sur la 3.10,tu vois qu'il y a plein de trucs qu'on a dû faire avant.Donc, quand je l'ai désinstallé,j'ai vu que ça m'a mis plein de temps à désinstaller.
00:06:45 :Plein de trucs, plein de trucs, plein de trucs.Et d'un seul coup, plus de terminal.Bon, je vais mettre à jour un peu mon système graphique.
00:06:51 :Ça ne se met pas à jour.Je fais bon, j'éteins le PC.Il marque erreur.Je le rallume.Je le rallume.Et là, boum, directement en terminal.
00:06:59 :Et en fait, quand c'est parti,j'avais pu tout désinstaller.Du coup, j'ai tout recommencé à zéro.Voilà, c'est juste ça le retour.Oui, mais ça m'est arrivé aussi.
00:07:09 :J'avais déjà vu pareil.En fait, quand tu commences,tu te dis, je veux un truc propre et tout.Puis en fait, je me souviens avoir fait çaavant d'utiliser les environnements virtuels, etc.
00:07:21 :J'avais fait cette bêtise aussi.Mais je crois que c'était sur une machine virtuelle.Du coup, c'était un peu moins catastrophique.Voilà.Et après, est-ce que tu as toujours tes problèmesde log au début, quand tu démarres ?
00:07:35 :Oui, j'en ai parlé avec Thibault en message privé.Il m'a dit, franchement, tu en as quelques-uns.Il fait, ce n'est pas grave.Il fait, à la limite,il est habitué à en voir plus qu'il en général.
00:07:48 :Il ne sait rien du tout.Il fait, ça marche, ça marche.Il ne faut pas se prendre la tête.C'est sûr.Mais moi, je te disais juste,fais attention, contrôle bien les logs.
00:07:56 :Oui.Et moi, j'avais un problème, justement,de même avec l'effacement automatique des logs.C'est un truc circulaire.Le truc, il se remplissait automatiquement à chaque fois.
00:08:07 :Et c'était à cause d'une carte mère Asus.J'avais un warning ACPI région, je crois.Donc, attention à ce truc-là.Ça peut être un péché.J'espère qu'il n'y aura pas d'erreur ACPI quelque chose.
00:08:19 :Après, tu n'auras peut-être pas ce problème-là.Mais en tout cas, si un jour, tu as un problème,peut-être que ça vient de là.Tu sauras.
00:08:25 :OK.Est-ce que d'autres ont des questions, des remarques,des choses à dire, des trucs à partager ?Tout le monde est friand du partage des étudiants.
00:08:39 :Donc, c'est avec plaisir.Si vous avez quelque chose à dire,n'oubliez pas que cette session, c'est aussi la vôtre.Donc, si vous voulez intervenir ou dire des trucs,c'est vraiment plus que bienvenu.
00:08:53 :Non.Seb, ça avance ton application Streamlit, là ?Ton application Streamlit, ouais.Je suis sur autre chose.Ah, d'accord.Tu es bientôt prête ?Après, il faut juste que je vois comment le mettre en production.
00:09:20 :C'est une application de suivi de séries,parce que je regarde beaucoup de séries.Et au bout d'un moment,à suivre les nouvelles saisons qui sortaient,c'était compliqué.
00:09:32 :Je faisais ça sur un fichier texte et ça m'a saoulé.Et donc, du coup, j'ai fait ça sur une application web.Elle est presque terminée.
00:09:42 :Magnifique.C'est quoi, c'est avec Django ?Ouais, c'est avec Django, ouais.Au début, j'avais fait ça juste en HTML, CSS.Et JavaScript, c'est une horreur.
00:09:55 :Pour faire la liaison, puis même la base de données,je ne sais pas trop comment ça marchait.C'est compliqué.Et pour Django, il y a la base de données qui est là.
00:10:04 :Et avec HTMLX,quand je modifie le nombre de saisons vuesou le nombre de saisons qui est sortien direct sur le site,ça me le modifie dans la base de données.
00:10:17 :Directement.Ouais, bah ouais.Donc, merci à ChatGPT pour le côté HTML.Mais tout le reste, j'ai fait tout seul.Mais le côté HTMLX, c'est ChatGPT qui l'a fait.
00:10:27 :C'est cool.C'est cool, mais franchement,même quand on dit j'ai fait avec ChatGPT, honnêtement...Après, il faut comprendre quand même.Voilà, tu mets quelqu'un devant en ChatGPTqui ne comprend rien,ça ne va rien ressortir.
00:10:38 :Donc, il ne faut pas avoir honte de direj'ai utilisé ChatGPT.Il ne prenait pas les bonnes...Je ne sais pas comment ça se fait,mais il ne prenait pas les bonnes classes.
00:10:46 :J'ai dû modifier quelques petites conneries, quoi.Non, non, mais c'est clair que c'est bien.Il faut travailler avec,mais il faut travailler intelligemmentet puis il ne faut pas dire...
00:10:54 :Assistant, quoi, vraiment.Voilà, c'est un assistant, exactement.C'est une doc optimisée.Ouais, générable.Donc, après, je pense que je vais le mettresur Python Anywhere pour le penser.
00:11:08 :Mais là, j'ai presque fini de styliser ma page.Dès qu'elle est finie de styliser,je passe à Python Anywhere.Super.On a hâte de découvrir ça.
00:11:17 :Tu nous la mettras dans la communauté,à moins que ce soit un projet privé.Ah ouais, tu sais,j'ai une question que je voulais poser.
00:11:25 :Est-ce qu'il y a moyen de dupliquer comme çaune application ou un projet complètement complet ?Dans le sens où je veux bien, moi,le mettre en ligne et donner le lien,mais je crois que tout le monde s'amuseà changer mes numéros de série, tu vois.
00:11:39 :Oui, en fait, tu ne veux pas partagerta base de données, tu vois.Même si c'était la même au départ,mais si quelqu'un veut s'amuserpour voir comment ça marche,changer le nombre de saisons vuesou le nombre de saisons qu'il y a,ce n'est pas la mienne parce que,
00:11:55 :voilà, tu vois ce que je veux dire.Ouais, tout à fait.En fait, soit...Ce n'est pas le bordel dans ma boîte à moi.Ouais, après, là,tu es clairement dans une gestion d'utilisateurque Django fait très bien.
00:12:10 :Donc, en gros,imagine que tu es en application en ligne.Tu vas avoir des...Tu vas devoir proposer une gestion d'utilisateur,donc sign up et sign in.
00:12:21 :Donc, en gros, les gens,ils pourront s'inscrire et se loguer.Et en fait, quand tu vas te loguer,tu auras accès uniquement à ton compte.
00:12:32 :Et c'est toi qui vas choisir, en fait,ce que les gens auront le droit de voiren fonction de quel type d'utilisateur c'est.Toi, tu es admin,donc tu peux aller voir directement dans la base de données.
00:12:41 :Mais un utilisateur lambda,il pourra, en fonction de ce que tu lui autorises à faire,soit aller juste lire la base de donnéesou soit aller modifier une partie de la base de données,une certaine table ou...
00:12:55 :Moi, je voudrais bien qu'il puisse modifierpour qu'il puisse voir comment ça fonctionne, en fait.Ouais, en fait, toi, tu veux qu'il puisse...Mais tu veux garder le contrôle des modifications.
00:13:07 :Voilà, c'est pour ça qu'à la limite,il faut en mettre deux en ligne.Je ne sais pas si c'est possible.C'est possible, mais ce n'est pas...
00:13:15 :Il y en a une de test, en gros.Une de démo.Ouais.Mais une démo qui est fonctionnelle.Oui, si, c'est possible de faire deux bases de donnéesparce que tu ne veux pas modifier...
00:13:28 :Si, carrément, tu peux dire qu'un utilisateur,il va aller voir...Je suis en train de réfléchir.C'est un peu deux bases de données sur une même application,sur un même URL.
00:13:42 :Tu peux doubler l'application, en fait,faire deux applications.Ah oui, avec un URL différent, du coup.Voilà, et comme ça, je mets à dispositionl'URL de la version démo,mais ce n'est pas l'URL de la mienne.
00:13:54 :Oui, tu peux faire ça,mais typiquement, sur Python Anywhere,tu ne pourras pas parce que si tu veux...Si tu as un compte gratuit, par exemple,tu n'as le droit qu'à une seule web app.
00:14:04 :Oui, je sais, j'ai vu ça.C'est ça qui est...Donc là, en plus, comme on est un peu dedans,des fois, on fait du Docker,le truc que moi, je ferais, c'est...
00:14:15 :Un projet avec deux applications.Oui.La même, en fait.Un projet avec deux fois la même applicationque je mets sur Python Anywhere.C'est le projet que je mets sur Python Anywhere.
00:14:26 :En fait, sur Python Anywhere, tu vas...Non, c'est une web app.Quand tu veux te déployer en prodsur Python Anywhere, tu mets...Tu peux mettre tous les scriptsque tu veux sur ton compte Python Anywhere.
00:14:38 :Tu peux même faire tourner...Je ne sais même pas si tu peux...Non, par exemple, tu vois,si tu voulais faire tourner du Streamlit,je ne suis pas sûr que tu puissesle faire tourner et qu'il puisse accéderparce qu'il faut un serveurpour faire tourner Streamlit,et je ne suis pas sûr que sur Python Anywhere
00:14:55 :tu le puisses, il faudrait tester.Mais en gros, tu vas voir quequand tu vas aller sur Python Anywhere,tu n'as le droit qu'à une seule web app.
00:15:02 :Et là, ce sera Django.Parce qu'en fait, pour faire tourner Django,il faut un WSGI.C'est un intermédiaire qui va interpréterles requêtes HTTP vers ton script Python.
00:15:18 :Et ça, en fait, Python Anywhere,il ne t'en met qu'un seul à disposition.Tu n'as pas le droit d'en avoir plusieurssi tu as un compte gratuit.
00:15:25 :Ou alors, je crée un deuxième compteavec notre adresse mail.Oui, tu peux faire ça.Et si tu veux, sinon,une solution qui est...Si tu ne veux pas payer, ce n'est pas possible.
00:15:42 :Mais en fait, si tu prends un VPS à 5 euroschez Linode ou quoi, là,typiquement, tu fais ce que tu veux.On peut mettre plusieurs projets sur un VPS.
00:15:54 :Oui, bien sûr.En fait, un VPS, c'est vraiment un serveurcomme si c'était ton ordinateuret que tu faises ce que tu veux avec.Donc, en gros...
00:16:02 :Moi, pour le mien, tant qu'à faire,autant mettre ces deux dessus, en faire deuxavec deux différentes,une adresse démo et une adresse la mienne.
00:16:11 :Mais du coup, là, sur ton VPS,il faudra que tu t'occupes toi-même du serveur.Donc là, je te conseille de regarder du côté Docker.En fait, moi, ce que je ferai,c'est que je ferai un conteneur de l'app,de l'application,et puis limite, j'en ferai deux, quoi.
00:16:25 :Et comme ça, tu aurais deux bases de données distinctes.Et comme ça, ça ne fout pas le bordel dans la mienneet puis les gens peuvent s'amuser à essayer l'application.
00:16:33 :Oui.OK.Je vais réfléchir un peu.Si je vois, j'essaierai de te proposer un petit truc.Je pense que moi, un VPS infomaniaque,comme il avait...
00:16:45 :Infomaniaque, oui, c'est une bonne idée.Etibou, il a sa formation sur...Sur le clone de JetJPT.Oui.Bon, bah, super.Intéressant, Seb.Tu vois, j'ai bien fait d'insister.
00:16:58 :Oui, oui.Gabriel, oui, vas-y.Infomaniaque.Infomaniaque, j'ai vu, c'est le forfait,je crois qu'il est minimum à 27 balles par mois.Et toi, tu avais...
00:17:08 :Moi, j'en ai un à 5 euros.J'ai regardé aussi.J'en ai un à 5 euros.À combien ?À 5 euros.Le premier VPS, il est à 5 euros.
00:17:15 :Ah, c'est infomaniaque ?Ouais.Ah, tu pourras m'envoyer le...Où t'as cliqué, parce que...Pour prendre...Pour prendre un mutualisé.Ouais.C'est comme chez Linode, Gabriel, tu t'es...
00:17:23 :Enfin, il y a un truc que t'avais pas trouvé et...OK, bah, merci de l'info.Je regarderai.Si je le trouve pas, je t'enverrai un message.
00:17:30 :Je comprends rien,où il faut cliquer sur les VPS, en fait, à chaque fois.Donc c'est tout.Je rigole, hein.Pas de soucis.Merci.Après, tu verras, c'est un peu toujours pareil.
00:17:38 :Mais ouais, allez écouter le mutualisé,parce qu'en gros, ça veut dire que vous avez pas un serveur dédié,vous partagez une partie de serveur avec les utilisateurs.
00:17:46 :Ça reste privé, mais c'est juste qu'en termes de ressources,c'est un peu moins performant.Mais sinon, réfléchis un peu, Seb, à ton histoire.Pour moi, il faudrait gérer un seul URL et une même base de donnéesavec des accès différents, etc.
00:18:06 :Faut regarder un petit peu, mais pour moi, l'architecture,c'est plus comme ça.Ça se fait pas trop de dupliquer l'applicationavec deux bases de données différentes, distinctes.
00:18:15 :Pour moi, bien sûr, pour faire de la prod et du test,ça y a pas de soucis.Mais voilà.En bref, à réfléchir.OK.Et peut-être que ce qu'on va faire aujourd'hui,peut-être que ça pourrait te servir aussi.
00:18:26 :Ben ouais.J'ai mis une petite formation sur Docker avant.Ouais, ouais, ouais.Mais n'hésite pas si t'as des questions aussi,si tu veux qu'on en discute.
00:18:36 :OK, merci.OK.Du coup, ce que je voulais vous montrer aujourd'hui,c'est Firebase.Alors, en fait, ce qu'on peut faire,c'est une petite intro sur Firebase.
00:18:49 :Qu'est-ce que c'est ?On va créer un projet et une base de données.On va utiliser l'authentification de Firebase.Donc, en gros, je vais vous montrer comment ça marche.
00:18:57 :Implémentation dans Streamlit.Pourquoi pas ?Peut-être que je le ferai uniquement dans un script indépendant.Et puis, Forgot Password Feature,à voir si on a le temps de le faire.
00:19:09 :Et puis, si on peut le faire surtout,parce qu'en fait, l'API que j'utilisais,elle est obsolète.Pour faire...L'API que j'utilisais avant,pour faire la réinitiation de password,est obsolète.
00:19:21 :Donc, à voir si,avec la nouvelle que j'ai mis à jour,il n'y a pas longtemps, ça fonctionne toujours.Ça vous va ?Oui ?
00:19:32 :OK.Cool.Du coup, Firebase, qu'est-ce que c'est ?Firebase,c'est des solutions qui sont très intéressantes.Firebase a été racheté par Google.Je ne suis pas sûr qu'au début, c'était Google.
00:19:48 :Mais, en gros, je vais supprimer ça.Comme ça, on va partir du début.On va tout faire de A à Z.OK.Alors, là, vous allez sur...
00:20:05 :Si vous avez un compte Google,créez-vous-en.Tu verras, Gabriel, que c'est un peu du...Comment ça s'appelle ?La boîte de Pandore, en fait.Dès que tu regardes un truc,tu découvres d'autres choses, etc.
00:20:24 :Tu verras qu'en fait,c'est un tout.Ce n'est pas philosophique, ce que je dis,mais c'est juste qu'en gros,tu as l'impression de...Tu dis que tu connais plein de choses, etc.
00:20:38 :Mais en fait, c'est juste des agencements un peu logiquesde connaissances, etc.Donc, il ne faut pas...Il ne faut pas se laisser impressionner, entre guillemets,quand vous voyez des gens qui maîtrisent plein d'outils, etc.
00:20:54 :C'est juste que c'est presque naturel, en fait,de passer là-dessus.Enfin, bref, aparté.Et donc, Firebase, qu'est-ce que c'est ?C'est vraiment une solution complexequi peut vous proposer des...
00:21:10 :des solutions gratuites,jusqu'à une certaine utilisation,mais ça, on va le voir,pour vos applications.Donc, c'est vraiment du back-end.Et c'est du back-end no-code.
00:21:24 :C'est-à-dire qu'avec Firebase,vous pouvez créer des bases de données,par exemple, Firestore,qui sont des bases de données documents.J'en avais déjà parlé une fois.
00:21:34 :En fait, une base de données documents,à l'inverse d'une base de données relationnelle,comme MySQL,il n'y a pas de structuration de la table.Donc, c'est beaucoup plus flexiblepar rapport à votre schéma de données.
00:21:46 :Si, par exemple, vous avez un schéma de donnéesque vous voulez créer avec MySQL,une table où vous avez...où vous répertoriez des étudiants,donc vous allez devoir créer une table,initialiser la tableen définissant vos colonneset les types de variables dans chaque colonne.
00:22:03 :Donc, par exemple,le nom, ça va être un string.Le prénom, ça va être un string.L'âge, ça va être un int, etc.Donc, imaginez,vous créez votre base de données MySQL,vous l'initialisez.
00:22:13 :Et puis, au fur et à mesure,votre projet évolue,vous vous rendez compteque vous allez avoir besoinde changer le type d'une colonne.Avec une base de données MySQL,ça va être hyper compliquéparce qu'en fait,toutes les entrées,elles sont déjà structurées.
00:22:28 :Alors qu'avec une base de données type documents,comme l'offre Firestore de Firebase,eh bien, vous pouvez, en fait,vraiment modifier le schéma de donnéesque vous avez.
00:22:41 :Parce qu'en fait,les bases de données orientées documents,il faut les voircomme des collections de dictionnaires.Vraiment comme un gros JSON, en fait,sur lequel vous pouvez faire des requêtes, etc.
00:22:51 :Donc, vous tapez Firebase sur Google,pas de souci.Et là, il nous demandede créer d'abord un projet.Donc, en fait, un projet,vous allez voir,c'est l'endroit, le spacedans lequel vous allez avoir géré vos applications.
00:23:10 :Donc là, on va créer un projet.On va dire docstring project.Là, il vous demandesi vous voulez activer le Google Analytics.Donc, on met oui.
00:23:23 :Mais bon, ce n'est pas obligé.C'est juste que si vous voulez avoir des datassur le nombre de requêtes que vous avez,l'origine des utilisateurs, etc.
00:23:32 :Sélectionner un compte.Défaut d'un compte sur Firebase.OK.Bon, voilà.C'est parce que j'ai créé le Google Analytics.Mais bon, on ne va pas s'en occuper aujourd'hui.
00:23:43 :Donc là, ça avance.Et c'est, je le redis,c'est un outil no code.Donc, il ne faut pas avoir compte,quand on est développeur,d'utiliser des outils no codeparce que ça peut être très puissant,très rapide à mettre en place.
00:23:59 :Et parfois, on n'a pas besoinde la grosse artillerie pour un projet.Donc, typiquement, en fait,moi, Firebase,je l'utiliserai typiquement dans un projetavec Streamlit, par exemple.
00:24:12 :Parce qu'en fait,Streamlit ne gère pas nativement les bases de données.Donc, on pourrait imaginerune base de données gérée sur Firebase.Et en fait, vous allez voir que Firebase,il permet de faire beaucoup de choses,d'autres choses très intéressantesque la base de données.
00:24:33 :Donc là, qu'est-ce qu'on a fait ?On a juste créé notre projet Firebase.Donc, vous arrivez sur un espèce de dashboard.Et ici, vous avez,voilà, vos différentes possibilités.
00:24:45 :Donc, moi, je vais vous montrerce qu'on fait d'abord.Donc, une fois qu'on a notre projet,on va créer une application dans Firebase.Après, ne me demandez paspourquoi on veut créer un projetpuis une application.
00:24:56 :C'est juste que, voilà, c'est comme ça.Firebase, il est créé comme ça.Donc, en l'occurrence,comme je vous dis, c'est du back-end.Donc, imaginez que vous,vous êtes développeur mobile iOSou des choses comme ça.
00:25:07 :Vous pouvez développer votre application avec iOSet vous dites, je vais vouloir communiquerentre mon application iOSavec mon Firebase.Ici, nous, on va créer une application web.
00:25:18 :En l'occurrence, ce sera StreamIt après.Donc, vous sélectionnez ici Web.Et donc là, vous devez donner un nom d'application.Donc là, si vous vous souvenez tout à l'heure,la dernière fois, on avait utiliséles données du Titanic.
00:25:29 :Donc, on va repartir là-dessus.Donc, Titanic Application.Voilà, on enregistre dans StreamProject, etc.Voilà, donc là, on a créé,on a créé une application.Enfin, voilà, ne soyez pas perdus.
00:25:44 :C'est juste, c'est comme ça que ça fonctionne.C'est ça qu'on utilise pour créer.Est-ce que je vais aller dans VS Code ?Ouais, dans VS Code.
00:26:00 :Donc, je retourne ici dans Firebase.Ça, je vais le récupérerparce qu'en fait, c'est ce qui me permetde me connecter à mon projet.Donc, je vais zoomer un peu si vous voyez.
00:26:14 :En fait, là, il vous donne un peu le codequ'il faut utiliser pour un autre langage,mais nous, on va utiliser Python.Donc, en fait, on va juste servir de ça.
00:26:22 :C'est un dictionnaire.On va créer un dictionnaire, comme ça,avec tout ce qu'il faut pour se connecterà notre application.Donc, en fait, ça, c'est une clé d'APIpour se connecter à l'application Titanicqu'on est en train de créer.
00:26:35 :Et ici, Project ID, etc.Pour ceux qui connaissent AWS,des systèmes comme ça,peut-être que vous êtes familier avec Bucket.Parce qu'en fait, Firebase, il vous permet,comme je vous l'ai dit, de faire plusieurs choses.
00:26:49 :Donc, on peut avoir une base de données.On peut avoir un Bucket.En fait, un Bucket, ça va être un endroitoù on va stocker plein de trucs.
00:26:56 :On peut stocker des fichiers textes.On peut stocker des images, etc.Donc, ça peut être intéressant.Et on peut aussi, vous allez voir,on va créer ça.
00:27:05 :Ça, je vais le garder.Ici.Suivant.Suivant.Voilà, il n'y a pas de...Tout ça, moi, je ne m'en sers pas.On est ici.Donc là, on a créé notre application Titanic Appdans notre projet DocStream.
00:27:19 :OK ?Et ici, on a plusieurs possibilités.Donc, vous voyez, ici, c'est tout ce qu'on peut créerdepuis Firebase.Moi, je vais commencer par,on va dire, peut-être...
00:27:33 :Allez, on va commencer par l'authentification.Imaginez que vous avez,que vous créez une application front-endou j'en sais rien,et vous voulez gérer des utilisateurs.
00:27:46 :Et vous n'avez pas envie de vous embêterà le coder vous-même à la main,et vous préférez laisser cette tâchequi est un petit peu critique,parce qu'en fait,quand vous demandez à des utilisateursde s'enregistrer dans votre application,ils renseignent leur e-mail et un password.
00:27:59 :Malheureusement, beaucoup d'utilisateursutilisent le même e-mail et le même passwordpour plusieurs applications,pour leur compte Google,pour leur compte Instagram,je n'en sais rien.
00:28:08 :Donc, imaginez que vous,vous créez une application,vous gérez vous-même les utilisateurs,et vous faites voler la base de données.Vous pouvez recevoir des plaintesde vos utilisateurs,parce qu'en fait, vous êtes responsablede la base de données que vous avez créée.
00:28:23 :Et du coup,s'ils se font voler leur password, etc.,et qu'après, ils peuvent se faire attaquerleur compte Instagram,leur compte Facebook,je n'en sais rien.
00:28:32 :Donc voilà, c'est un petit peu critiquecomme phase,la gestion des données utilisateurs.Donc, vous pouvez vous dire,moi, je préfère laisser ça à Firebase,ou du coup, en l'occurrence, à Google,parce que toutes les sécurités, etc.,
00:28:44 :c'est hyper performant,et vous allez avoir du malà craquer une base de donnéesde chez Google.Donc, on va dire quele système d'authentification,on le laisse gérer par Firebase.
00:28:55 :Donc là, on commence.J'ai été ici dans Créer, Authentification.Et donc là, vous pouvez offrirà vos utilisateursplusieurs moyens d'authentification.Ici, nous, on va juste voir celui-là,c'est-à-dire l'authentificationavec adresse e-mail et mot de passe.
00:29:12 :Mais vous pouvez,vous savez, des fois,quand vous allez sur une applicationet que vous avez Sign In,With, vous avez Facebook, Google,ici, vous pouvez faire tout ce que vous voulez.
00:29:21 :Donc nous, on va faire ici,adresse e-mail,et on dit que je veux,pour mon application,enfin, pour mon projet Doctrine Project,je veux activer la possibilitéde créer des utilisateursavec adresse e-mail et mot de passe.
00:29:33 :OK, donc on fait enregistrer.Voilà, c'est activé.Donc là, pour l'instant,dans mon projet Doctrine Project,je n'ai aucun utilisateur.Alors maintenant,on se retrouve sur VS Code.
00:29:46 :Donc, on va faire un script.On va créer un script.On va déjà voirsi on arrive bien à discuteravec notre projet Firebase.Donc, Firebase project.py.
00:30:04 :Et vous vous souvenez,tout à l'heure,j'ai sauvegardé un peu,c'est toutes les informations.Donc, en gros,c'est un dictionnairequi nous permet de discuteravec notre projet Firebase.
00:30:16 :Donc ici, il faut justeun petit peu le modifier.Et en fait,donc ça, ça va être notre config.En fait, on a juste transforméen dictionnaire les informationsde connexion de Firebase.
00:30:39 :OK.Ensuite, il faut justequelques petites bibliothèques Pythonpour pouvoir discuter.Donc moi, je les ai déjà installées,mais je vous les ai montrées.Donc en gros,il vous faut Firebase REST APIet Firebase Admin.
00:30:54 :Là, pour l'instant,on va se servir uniquementde Firebase APIpour tout ce qui estauthentification et Firebase Admin.On s'en sert pour après.Moi, je m'en sers pour me connecterà la base de données Firestorequ'on va créer après.
00:31:05 :Donc, vous installez ces trucs-là.Voilà.Excuse-moi.Je t'embête juste.Non, je ne t'embête pas.Firebase Admin et Firebase.Après, c'était...Ouais.C'est rare que je te fasse,mais...
00:31:18 :C'était...Comment tu fais pour revenir en arrièrede ce que tu as fait avant ?Soit tu fais...Tu vas découvrir ça sur Ubuntu,je pense.
00:31:29 :Flèche du haut, flèche du bas.Ah, OK.Sinon, ça marche sur macOS.Tu peux faire CTRL-Ret puis tu sais quesi tu commences à taperPIP, par exemple,il va me sortir toute l'historiquedes pipes que j'ai eues.
00:31:43 :Ah, cool.Et en dessous,quand tu continues à faire CTRL-R,par exemple,c'est intéressantquand tu fais beaucoupdes connexions SSH, etc.sur différents serveurs,tu ne te rappelles plusde l'IP que tu as utilisé,tu fais CTRL-R SSH.
00:31:55 :Je ne vais pas le faireparce que sinon,il va me faire apparaîtretous les trucs.Mais voilà.Si, par exemple,je fais CTRL-R Pythonet que je continueà faire CTRL-R,il va me sortirtoute l'historique de commandesavec Python.
00:32:07 :OK.OK.Donc, là...Oui.Donc, si je fais PIP list,je vais justefaire un PIP list.Alors,on aFirebaseAdminet FirebaseAPI.Je vais vous les mettre.
00:32:19 :OK.C'était ça,ta question,Gabriel ?Oui.J'ai installéFirebaseAdmin et API.C'est bon.OK.Merci.Alors,maintenant,ce qu'on fait,c'est qu'on importeFirebaseet FirebaseAPI.
00:32:35 :Donc,on vainstallerFirebaseAdminet FirebaseAPI.OK.Alors,Firebase...En fait,quand vous avez installéFirebaseRestAPI,l'import,ça,c'est Firebase.OK.Donc,soit.On vase créer un objetapplicationqui va être,en fait,Firebase.
00:32:58 :Donc,j'utilise le module Firebaseque j'ai importé.Et ici,j'initialise l'applicationavec les donnéesde configque m'a donnémon compte Firebasepour me connecter.
00:33:08 :OK.Donc,on va déjàvoir sitout se passe bien.Si je fais vite,vite,vite.Et que je runmon...OK.Donc,a priori,je n'ai pas de problème.
00:33:22 :Je n'ai pas de problèmeparce qu'il n'a rien fait,en fait.OK.Donc,on vainstallerFirebase.OK.Donc,on vainstallerFirebase.OK.Donc,on vainstallerFirebase.
00:33:40 :OK.Il me dit justequ'en fait,il manque l'URLde la database,mais je ne l'ai pas créé,en fait.Donc,je vais juste lui mettreun truc vide.
00:33:50 :Ah,ce n'est pas grave.Et voilà.Donc,là,on ale lien de connexion.C'est un peucomme si vous saviez...Ouais,tu as la même erreurque moi,Gabriel.
00:34:03 :Tu n'as qu'à justerajouter database URLet puis tu mets une liste videparce qu'en fait,normalement,il veut se connecterà une databaseque tu aurais crééedans Firebase,mais pour l'instant,on ne l'a pas faite.
00:34:14 :Donc,il ne comprend pas.Tu peux justemettre une liste videpour...Enfin,un string videpour database URL.Tu as bien tapé ça,là,database URL ?
00:34:25 :Ça n'a pas marché,mais j'avais tapédatabase.Ah.Ouais.Classique.OK.Donc,là,je run Firebase.J'ai mon app.C'est un peu commequand vous discutezentre une base de donnéeset une base de donnéesmaïscuelle.
00:34:41 :C'est un connecteur,en fait.OK.Donc,là,maintenant,on va créerun objet d'authentificationqui,en gros,vous voyezjuste un modulede Firebase.OK.
00:34:55 :Et donc,maintenant,ce qu'on va dire,c'est qu'on va essayerde se créerun utilisateurdepuis la ligne de commande.Vous voyez,ça peut déjà êtreassez puissant.
00:35:05 :Donc,on va direque ça va êtreun input usernameet le password.Je ne sais passi vous connaissez.Vous savez,quand on fait...
00:35:14 :Je vaiscomment...Je pense que c'estça,run Firebase.Qu'est-cequ'il veut?Pourquoi il dit ça?Laissez-moi allervoir.OK.Donc,là,on va direque ça va êtreun input usernameet le password.
00:35:31 :Je ne sais passi vous connaissez.Vous savez,quand on fait...Je vaislaissermoi allervoir la doc.Déblogageen direct.C'est monobjet appqui doitêtrelà.
00:35:46 :Donc,on vadireque ça vaêtreun inputusernameet le password.Donc,on va direque ça vaêtreun inputusernameet le password.
00:36:01 :Donc,on va direque ça vaêtreun inputappqui doitfaire office.Et donc,là,vous voyez,j'ai fait un input.Bon, ça,si vous faites du Python,vous connaissez.
00:36:16 :Et si je tape ici,Pierre,ça me parait en clair.Un petit trucqui peut être intéressant,c'est que si jamaisvous voulez rentrerun password,donc là,en l'occurrence,ça pourrait être intéressantparce que je suis en trainde vous partager mon écran.
00:36:29 :Je n'ai pas envieque quand je tape mon motde passe,vous le voyez.Donc,vous voyez ce que je dis.Donc,en gros,si je dispasswordgetpass.getpass
00:36:40 :et puis là,je metsvotre password,ça va être différent.Je fais,si je relèveFirebase,donc là,je tape Pierreet là,si je tape password,vous voyez,il n'y a rien qui s'affiche,mais il a bienprismon password.
00:36:56 :Vous voyez ?OK.Ça,du coup,je vous conseillede l'utiliser.C'est unintéressant.OK.Donc,là,maintenant,on va dire qu'en gros,notre script,il nous demande notre usernameet notre passwordet maintenant,on veut créer l'utilisateurdans notre base de données.
00:37:15 :Donc,il suffit simplementde faireavecl'autre.On ditcreateuser withemail and password.Donc,ça,c'est une fonctiondeFirebaseet on va lui balancerle usernameet le passwordqu'on a demandé.
00:37:33 :Ici,vous allez voirqu'on va aller icien même temps,si je refresh,vous voyez que là,je n'ai pas d'utilisateursqui sont renseignéset maintenant,si je lancemon projet,donc,je disusername,en fait,c'est plutôtemailparce qu'on a ditqu'on a ditque c'étaitauthentification
00:37:54 :par emailet password.Donc,je relanceemail.Donc,on va direpierreatgmail.comet le password,on va lui direusername is not defined,bien sûr.
00:38:14 :pierreat gmail.comet le password.Voilà.Donc là,normalement,si je vais voirdans mon Firebase,vous voyez quej'ai l'utilisateurici.Donc,je peux aller le voiret ce qui est pas mal,c'est qu'en fait,je peux gérer ses droits.
00:38:37 :Je peux direje désactive,je supprime,etc.Imaginez que vous,vous êtes l'administrateurde ce compte Firebaseet bien,vous voyez quevous avez un utilisateurqui s'est enregistréet vous pouvez faireplusieurs choses.
00:38:50 :Voilà,il y a sign-in méthodedonc il peut uniquementse connecter via adresse mailet même gérer l'authentificationmultifacteur par SMS.Ici,vous pouvez gérertoutes lestemplates,etc.
00:39:01 :dequ'est-ce qui se passequand il faitréinitialisation de password.Vous pouvez modifierun petit peu,en gros,levous pouvez modifierle messagedemodificationde mot de passe,etc.
00:39:15 :Donc,pour l'instant,nous,on va justevoir si notre log,notre fonction de logfonctionne bien.Donc,maintenant,qu'est-ce qu'on va dire ?Voilà,on est là-dessus.
00:39:27 :On va direet vous voyez que,normalement,il gère aussi tout ce qui estunité dans la base de données.Si, par exemple,je refaisla même choseet que je mets,attends,j'avais mis quoi ?
00:39:39 :pierre.pierreatgmail.comet que je metsun autre password,il va gérerautomatiquementl'email existe.Donc,vous voyez,un peu comme on pourrait fairedans lesdans les Djangoet compagnie,c'est pas malparce qu'il nous ditattention,il gère un petit peules erreurs.
00:40:00 :Donc là,on pourrait faire untry except avecHTTP erreuret puis en disantsi t'es en code400 avec un messaged'email existe,il faut renvoyer.
00:40:09 :Ouais,maisGabriel,c'est justepour la saisiequi se met,qui t'affichepas assez.Tu sais,quand t'asdesétoiles,quand t'es surun site webet qu'on te demandede rentrerun passageou qu'on te demandede rentrerun password,t'as des petits pointsqui s'affichent.
00:40:31 :C'est juste çaqu'on fait avecgetpass,c'est juste pourmasquer la saisie.Moi,il se masque pas,c'est ça qui est marrant.Quand tu faisgetpass,ah oui,ça se masque pas.
00:40:43 :Je saisiset là,j'ai bien créédans la base donnéesmon compte,maisje vois mon mot de passeen fait,il se saisitcomme un...
00:40:53 :Ici,quand t'es dans l'inputet que je peux saisir,c'est bizarre.Ouais,bizarre,j'ai jamais vu ça.Password,input,maybe,echoed.Après,il y a d'autres moyensde masquer la saisie.
00:41:07 :Moi,j'utilise ça,mais je pense qu'avec input,tu peux définir...Je pense que tu peux lui direde...Ah,il y a peut-êtreune option.
00:41:16 :Moi,je sais pas.Désolé,je sais pas,j'ai jamais eu ce problème.Ça doit être ton Ubuntuqui est mal installé.Je rigole.C'est quoi ?
00:41:30 :Initialize app.Firebase.T'as bien installé Firebasecomme moi,hein ?Reste API.Ouais,salut Pierre-Henri.Ouais,salut.Ouais,j'ai fait pip3,install Firebase.Ouais,mais c'est pas Firebase,c'est Firebase.
00:42:06 :Ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,ouais,mais c'est Firebaseet Firebase Reste APIqu'il faut installer.Ah.Merci.
00:42:25 :EXACT.Attends,regarde,je te montresi je fais pip list.C'est ce que je disaistout à l'heure en fait,que même si on installeFirebase Reste API,l'import,il est…Tiens,fumer là,pip,install.
00:42:43 :L'import,c'est Firebase,mais en gros,il va chercher Firebase Reste API.Faire base non chose,Firebase Reste API,pardon,et Firebase Admin,c'est ça ?
00:42:54 :Ouais.Pour l'instant,Firebase Admin,on ne s'en est pas servi encore.Mais si tu veux suivre la suite,c'est Firebase Admin.Je les ai mis dans le chat,les deux,je crois,un peu plus haut.
00:43:04 :Ouais,je les ai mis ici.Ouais,tout à fait,ok.Je vais l'installer,merci.Ouais,pas de souci.Donc,maintenant,vous voyez qu'il gèreautomatiquement les utilisateurs,donc il est assez sympa.
00:43:18 :Donc,email,machin,on va diresigninorsignupégal.Ok.Et du coup,on va dire que c'estifsigninorsignupégalsignup,on va faireça.
00:43:37 :Donc,on va fairesigninousignupégalsignup,on va faireça.Et,on va direelifsigninorsignupc'est signin,on va juste direet puis on va mettreeuhloginégalet puis on va mettreunhitlogin,on va voir ce qu'il nous fait.
00:44:03 :Ok.Donc,là,je relance.runfirebaseprojectsigninorsignup,bah moi je veuxsignin,donc comment je l'ai miseuhsignin,ok.Donc,l'email que j'avais mis tout à l'heure,c'étaitpierreat gmail.com
00:44:25 :et le mot de passe,c'étaitun plus petitpierre sophistiqué,voilà.Donc là,euhest-ce queil m'aeuhconnecté,j'ai l'impression que oui.J'ai bien tout ce qu'il faut,on va regardereuhsi je faisloginpointcase,je vais voirqu'est-ce que j'aikinddisplayregisterrefresh token,
00:44:50 :voilà.Donc en gros,euhça a l'air de bien fonctionner,displaylocal IDeuhpasswordresponseeuhqu'est-cequeje voudrais utiliseret puis je vais essayer de me logger avec un truc euhavec ununmauvaiseuhloginpour voir si ça fonctionne bien,signineuhpierre,je vais faire ça mais avec un mauvais password,
00:45:18 :j'ai mis le .comok.Et donc là,euhj'ai bien l'erreur parce queeuhj'ai uninvalid loginerrorscode 400,etc.Donc vous voyez qu'avec ça,on peut gérer une authentification,il suffirait par exemple que je récupèrele type de réponse que j'obtienset puis en fonction de
00:45:37 :de la réponse que j'obtiens,bah je peux direbah ok,tu peux te connecter,etc.Bah voilà,on peut faire facilementeuhune gestion dede connexion grâcegrâce à ça etavec une base de données qui estcréée directement ici,on peut ajouter un utilisateur ici à la main,
00:45:54 :on peut direJeanatgmail.comson mot de passeeuhon va direhelloJean-Jeanajouter l'utilisateur,vous voyez qu'il va me l'encrypter ici,donc il n'est paseuhil ne va pas m'afficher le mot de passeeuhvoilàet puis on peut mêmeeuhsi on fait réinitialiser le mot de passe,
00:46:15 :donc en faiton va juste fairesettingseuhbon là ça n'a pas marchéparce que l'adresse n'existe pasmais euhon peut gérer un petit peuvoilà pas malpas mal de chosesvia cettecette interface.
00:46:28 :Donc ça c'était pour la partieeuhlogin.Est-ce quevoilà déjàest-ce quequ'est-ce que vous en pensezest-ce queeuheuhouic'esteuhouais moi je suis d'accordeuhc'est un petit peuc'est vrai que c'est un peu plusc'est un peu plus lourdmais bon forcément
00:46:47 :c'est pluseuhc'est duc'est duc'est pas du no-codedonc euht'es obligé de mettre vraiment les mains dedansetcdonc ça a des bons et des mauvais côtéstu mets les mains dedanstu vois ce quetu comprends un peuce que tu faismais là voilà
00:47:01 :si par exempletu dois prototyper rapidementune applicationavec une base de données en lignemoi je préfèrevoilàcarrément utiliser ce genre d'outils làFirebaseeuhça peut êtreeuhsuper pratiqueeuhdonc ça c'était pourl'authentificationdonc vous pouvez gérer facilementune applicationexternegrâce à l'authentification
00:47:20 :de Firebasemaintenanton vadirequ'on va s'amuser un petit peuaveceuhdonc là c'estdans Firebasej'ai connectél'authentificationon va se dire que maintenanton aimeraiteuhune base de donnéesFireFirestore databaseen faitil y a deux types de bases de donnéesil y a
00:47:40 :Realtime databaseet Firestore databaseeuhmoi je préfèreFirestore databaseparce quevous allez voirelle est un petit peu pluseuhflexiblec'est à direvous pouvezeuhimbriquer des dictionnairesdansles uns dans les autresetcpour l'instantde ce que j'ai utiliséde Firebasec'est surtout
00:48:01 :le Firestoreet pas la Realtime databasedonc là on crée une base de donnéesokbon je vais démarreren mode productionje suis un foueuhon choisiteuhla régionoù on veutnotre base de donnéesdonc typiquementil faut faire attentionà çaquand vous avez
00:48:18 :des utilisateursil faut faireil ne faut pas que les donnéessoient n'importe oùdonc ça dépend des applicationsdonc moi je vais direEuropeokj'activeetj'aiune basede donnéesdoncje vaisil est en train de m'allouer de l'espacepour ma base de donnéesnotez que tout ça
00:48:41 :est gratuitfranchementon vit à une époqueextraordinairepour les développeursparce qu'il y a vraimentplein d'outilsqui sont disponibleseuhfranchementil y a tous les joursdes nouveaux trucseuhc'est vraimentfranchementc'est une belle époqueje trouveje suis peut-êtreun optimisteun idéalistec'est vrai que
00:49:05 :je parle de belle époquepour ce qu'on faitnous dans notre métierje ne parle pas vraimentde tout ce qui se passeen ce momentje n'aurai pas la prétentiondede dire queque tout va bienmais voilàpour ce qu'on faitje ne veux pas être mal compris
00:49:18 :il y a des erreursqui se passent en ce momenton ne va pas en parlermaisce que je veux direc'est quec'est queon a à notre dispositionbeaucoup d'outilsbeaucoup d'open sourceetc.
00:49:29 :donc il faut vraiment en profiterdonc làon est dansl'interfacebase de donnéesde Firestoreça marche par collectionen groson va direon va créer d'abordune collectionqu'on va appelerdonc làon était dansl'application Titanicon va direqu'on a desdes passagersdes passagers
00:49:48 :oket donc làon vaça marche pardocumentdonc en faitun documentil faut le voir commeun dictionnairedonc un dictionnairec'est un documentun dictionnairedonc un dictionnairec'est quoiles documentsça va êtredes informesdesexcusez moije me reprendson va avoir
00:50:09 :imaginezla collectionc'est un dictionnairedonc làla collectionvous avez crééla première clédans ma collectionc'est passageret après dans passagervous allez avoirdes entréesvous allez avoirde la donnéedonc làon va se créerun passageravec une cléaléatoirec'est à dire
00:50:29 :j'ai un champqui s'appellele champ nameje lui dis que c'estun stringet je lui dismon premier passageril s'appelle Jeanon peut ajouter un champon peut dire queje veux son âgeje veux que son âgec'est un type numberet il a 23 ans
00:50:43 :etc.etc.donc làvous voyez qu'on aune collectionpassagerdans laquelleje peux avoirplusieursplusieurs documentsdonc làsi j'ajoute un autreje peux diretoujours namestringet puis on va direMichelajouter un champâgenumberet là on va mettre 25et vous voyez que
00:51:06 :ce qui est pas malc'est quesi j'ajoute un autre champqui est même pasdans le premierque j'ai crééon va dire que làça va êtreest-ce qu'il a survécudonc on va diresurvieet donc làça va êtreun boulet 1et on va dire
00:51:22 :trueparce queon est optimistedonc là en faitj'ai une collectionavec plusieurs documentsdonc ma collections'appelle passagerj'ai plusieurs documentset dans chaque documentj'ai plusieursj'ai ce typede données làdoncmaintenantce qu'on aimerait fairec'est pouvoir aussicréerdesdes entréesdans la base de données
00:51:43 :depuis notre scriptet aussialler les récupérerdonc pour allerles récupérerc'est pour çaque j'avais utilisétout à l'heurefirebase adminla module pythonicic'est un petit peu différentcomment on faitpour accéder à la basede données firestorevous allez voirque ça se ressemble
Aucune occurrence trouvée pour « ».