arrow_back

Développement d'applications – Stocker des données d'application dans Cloud Datastore : Python

Accédez à plus de 700 ateliers et cours

Développement d'applications – Stocker des données d'application dans Cloud Datastore : Python

Atelier 2 heures universal_currency_alt 5 crédits show_chart Avancé
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Conçue pour le scaling automatique et les hautes performances, Google Cloud Datastore est une base de données de documents NoSQL qui simplifie le développement d'applications. Dans cet atelier, vous allez stocker des données d'une application Quiz en ligne à l'aide de Datastore. Vous allez également configurer l'application pour récupérer des données à partir de Datastore et les afficher dans le quiz.

Le squelette de l'application Quiz a déjà été codé. Vous allez cloner le dépôt contenant le squelette à l'aide de Google Cloud Shell, examiner le code dans l'éditeur Cloud Shell, puis l'afficher à l'aide de la fonction d'aperçu sur le Web de Cloud Shell. Vous modifierez ensuite le code de façon à stocker les données dans Cloud Datastore.

Objectifs

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Exploiter Cloud Shell en tant qu'environnement de développement

  • Prévisualiser l'application

  • Mettre à jour le code de l'application pour intégrer Cloud Datastore

Prérequis

Prérequis de l'atelier

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.

Créer un environnement virtuel

virtualenv vous permet de créer des environnements virtuels pour les espaces utilisateur afin d'installer différents ensembles de packages Python pour plusieurs projets. L'utilisation de virtualenv vous évite également d'installer des packages Python de manière globale, ce qui peut entraîner l'interruption des outils système ou d'autres projets Python. Dans cet atelier, virtualenv permet également de vérifier que Python 3 est utilisé pour toutes les commandes Python.

  1. Configurez un environnement virtualenv pour Python 3.

    virtualenv -p python3 vrenv
  2. Activez l'environnement virtuel.

    source vrenv/bin/activate

Préparer l'application Quiz

Le dépôt contenant l'application Quiz se trouve sur GitHub.com. Dans cette section, vous allez utiliser Cloud Shell pour saisir des commandes permettant de cloner le dépôt et d'exécuter l'application.

Cloner le code source dans Cloud Shell

  1. Clonez le dépôt pour la classe suivante :

git clone https://github.com/GoogleCloudPlatform/training-data-analyst
  1. Créez un lien symbolique qui servira de raccourci vers le répertoire de travail.

ln -s ~/training-data-analyst/courses/developingapps/v1.3/python/datastore ~/datastore

Configurer et exécuter l'application Quiz

  1. Passez au répertoire qui contient les exemples de fichiers de l'atelier :

    cd ~/datastore/start
  2. Exportez une variable d'environnement GCLOUD_PROJECT qui référence l'ID du projet GCP :

    export GCLOUD_PROJECT=$DEVSHELL_PROJECT_ID
  3. Installez les dépendances de l'application :

    pip install -r requirements.txt
  4. Exécutez l'application :

    python run_server.py

    L'application est en cours d'exécution lorsqu'un message semblable à celui-ci s'affiche :

    * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 179-313-240

Examiner l'application Quiz

  1. Dans Cloud Shell, cliquez sur Web preview > Preview on port 8080 (Aperçu sur le Web > Prévisualiser sur le port 8080) pour prévisualiser l'application Quiz.

    web_preview.png

    L'interface utilisateur de l'application Web s'affiche. L'application se compose des trois parties principales suivantes :

    • Create Question (Créer une question)
    • Take Test (Faire le test)
    • Leaderboard (Classement)

    welcome_to_quiz.png

  2. Dans la barre de navigation, cliquez sur Create Question (Créer une question).

    Un formulaire simple contenant des zones de texte pour la question et les réponses s'affiche. Des cases d'option permettent de sélectionner la bonne réponse.

  3. Dans la barre de navigation, cliquez sur Take Test (Faire le test), puis sur GCP pour accéder aux questions relatives à GCP.

    Un exemple de question s'affiche.

    gcp_quiz.png

    Les participants au quiz répondront aux questions dans cette partie de l'application.

  4. Pour revenir à l'application côté serveur, cliquez sur le lien Quite Interesting Quiz (Quiz très intéressant) dans la barre de navigation.

Examiner le code de l'application Quiz

Au cours de cet atelier, vous allez afficher et modifier des fichiers. Vous pouvez utiliser les éditeurs de script installés sur Cloud Shell, tels que nano ou vim, ou encore l'éditeur de code intégré de Cloud Shell.

Cet atelier examine le code de l'application Quiz à l'aide de l'éditeur de code Cloud Shell.

Lancer l'éditeur de code Cloud Shell

Dans Cloud Shell, cliquez sur Open Editor (Ouvrir l'éditeur) pour ouvrir l'éditeur de code.

OpenEditor11.png

Examiner l'application Web Flask

  1. Accédez au dossier /datastore/start à l'aide du panneau de l'explorateur de fichiers situé à gauche de l'éditeur.

  2. Sélectionnez le fichier ...run-server.py.

    Ce fichier contient le point d'entrée de l'application et l'exécute sur le port 8080.

  3. Sélectionnez le fichier ...quiz/__init__.py file.

    Ce fichier importe des routes pour l'application Web et l'API REST.

  4. Sélectionnez les fichiers ...quiz/webapp/questions.py et ...quiz/webapp/routes.py.

    Ces fichiers contiennent les routes mappant les URI aux gestionnaires qui affichent le formulaire et collectent les données publiées par les auteurs du quiz dans l'application Web.

  5. Sélectionnez le dossier ...quiz/webapp/templates.

    Ce dossier contient des modèles Jinja2 pour l'interface utilisateur de l'application Web.

  6. Affichez le fichier ...quiz/webapp/templates/add.html.

    Ce fichier contient le modèle Jinja2 du formulaire "Create Question" (Créer une question).

    Vous y trouverez une liste de sélection permettant de choisir un quiz, les zones de texte dans lesquelles l'auteur peut saisir des questions et des réponses ainsi que les cases d'option permettant de sélectionner la bonne réponse.

  7. Sélectionnez le fichier ...quiz/api/api.py.

    Ce fichier contient le gestionnaire qui envoie des données JSON aux étudiants participant à un test.

  8. Sélectionnez le fichier ...quiz/gcp/datastore.py.

    Il s'agit du fichier dans lequel vous rédigerez le code Datastore permettant d'enregistrer et de charger les questions du quiz vers et depuis Cloud Datastore.

    Ce module sera ensuite importé dans l'application Web et l'API.

Ajouter des entités à Cloud Datastore

Dans cette section, vous allez écrire le code permettant d'enregistrer les données du formulaire dans Cloud Datastore.

Créer une application App Engine pour provisionner Cloud Datastore

  1. Revenez à Cloud Shell et arrêtez l'application en appuyant sur Ctrl+C.

  2. Pour créer une application App Engine dans votre projet, saisissez la commande suivante :

    gcloud app create --region "us-central"

Le message suivant s'affiche une fois l'application App Engine créée :

Creating App Engine application in project [qwiklabs-gcp-f67238775c00cfaa] and region [us-central]....done. Success! The app is now created. Please use `gcloud app deploy` to deploy your first app.

Importer et utiliser le module Python Datastore

Ouvrez le fichier ...quiz/gcp/datastore.py dans l'éditeur Cloud Shell et ajoutez le code ci-dessous pour effectuer les opérations suivantes :

  • Importer le module os
  • Utiliser le module os pour obtenir la variable d'environnement GCLOUD_PROJECT
  • Importer le module datastore à partir du package google.cloud
  • Déclarer un objet client datastore.Client nommé datastore_client

Fichier datastore.py mis à jour

# TODO: Import the os module import os # END TODO # TODO: Get the GCLOUD_PROJECT environment variable project_id = os.getenv('GCLOUD_PROJECT') # END TODO from flask import current_app # TODO: Import the datastore module from the google.cloud package from google.cloud import datastore # END TODO # TODO: Create a Cloud Datastore client object # The datastore client object requires the Project ID. # Pass through the Project ID you looked up from the # environment variable earlier datastore_client = datastore.Client(project_id) # END TODO

Écrire le code permettant de créer une entité Cloud Datastore

Toujours dans le fichier ...quiz/gcp/datastore.py,

accédez à la fonction save_question() et supprimez l'instruction d'espace réservé pass existante. Ajoutez le code ci-dessous pour effectuer les opérations suivantes :

  • Créer une clé de type Question pour une entité Datastore, à l'aide de l'objet client Datastore
  • Créer une entité de question Datastore avec la clé
  • Parcourir l'ensemble des éléments du dictionnaire de valeurs fourni par le formulaire de l'application Web
  • Dans le corps de la boucle, attribuer chaque clé et valeur à l'objet de l'entité Datastore
  • Enregistrer les données avec le client Datastore

datastore.py – fonction save_question()

""" Create and persist and entity for each question The Datastore key is the equivalent of a primary key in a relational database. There are two main ways of writing a key: 1. Specify the kind, and let Datastore generate a unique numeric id 2. Specify the kind and a unique string id """ def save_question(question): # TODO: Create a key for a Datastore entity # whose kind is Question key = datastore_client.key('Question') # END TODO # TODO: Create a Datastore entity object using the key q_entity = datastore.Entity(key=key) # END TODO # TODO: Iterate over the form values supplied to the function for q_prop, q_val in question.items(): # END TODO # TODO: Assign each key and value to the Datastore entity q_entity[q_prop] = q_val # END TODO # TODO: Save the entity datastore_client.put(q_entity) # END TODO

Enregistrez le fichier datastore.py.

Exécuter l'application et créer une entité Cloud Datastore

  1. Enregistrez le fichier ...quiz/gcp/datastore.py, puis revenez à l'invite de commande Cloud Shell.

  2. Pour exécuter l'application, exécutez la commande suivante :

python run_server.py
  1. Dans Cloud Shell, cliquez sur Web preview > Preview on port 8080 (Aperçu sur le Web > Prévisualiser sur le port 8080) pour prévisualiser l'application Quiz.
  2. Cliquez sur Create Question (Créer une question).
  3. Remplissez le formulaire avec les valeurs suivantes, puis cliquez sur Save (Enregistrer).

Champ du formulaire

Valeur

Author (Auteur)

Votre nom

Quiz

Google Cloud Platform

Title (Titre)

Which company owns GCP?

Answer 1 (Réponse 1)

Amazon

Answer 2 (Réponse 2)

Google [sélectionnez la case d'option "Answer 2" (Réponse 2)]

Answer 3 (Réponse 3)

IBM

Answer 4 (Réponse 4)

Microsoft

Vous êtes redirigé vers la page d'accueil de l'application.

  1. Revenez dans la console et cliquez sur le menu de navigation > Datastore > Entities (Entités).

datastore_entities.png

La nouvelle question apparaît.

Récupérer des entités Cloud Datastore

Dans cette section, vous allez écrire le code permettant de récupérer des données d'entité à partir de Cloud Datastore pour visualiser votre question dans l'application.

Écrire le code permettant de récupérer des entités Cloud Datastore

À partir de l'éditeur de code, dans le fichier ...quiz/gcp/datastore.py, supprimez le code de la fonction list_entities(quiz, redact) et remplacez-le par une requête permettant d'effectuer les opérations suivantes :

  • Récupérer les entités "Question" pour un quiz particulier depuis Cloud Datastore
  • Extraire la requête à l'aide du client Datastore et créer une liste avec les données renvoyées
  • Énumérer la liste d'éléments et promouvoir l'identifiant de clé de chaque entité comme propriété de niveau supérieur
  • Renvoyer les résultats

Remplacez ce code :

""" Returns a list of question entities for a given quiz - filter by quiz name, defaulting to gcp - no paging - add in the entity key as the id property - if redact is true, remove the correctAnswer property from each entity """ def list_entities(quiz='gcp', redact=True): return [{'quiz':'gcp', 'title':'Sample question', 'answer1': 'A', 'answer2': 'B', 'answer3': 'C', 'answer4': 'D', 'correctAnswer': 1, 'author': 'Nigel'}] """

par celui-ci :

""" Returns a list of question entities for a given quiz - filter by quiz name, defaulting to gcp - no paging - add in the entity key as the id property - if redact is true, remove the correctAnswer property from each entity """ def list_entities(quiz='gcp', redact=True): query = datastore_client.query(kind='Question') query.add_filter('quiz', '=', quiz) results =list(query.fetch()) for result in results: result['id'] = result.key.id if redact: for result in results: del result['correctAnswer'] return results """

Enregistrez le fichier datastore.py.

Exécuter l'application et tester la requête Cloud Datastore

Maintenant, vérifiez si votre question est extraite de Datastore et chargée dans votre application Quiz.

Dans Cloud Shell, appuyez sur Ctrl+C pour arrêter l'application, puis redémarrez-la :

python run_server.py

Prévisualisez le quiz : Si le navigateur qui exécute le quiz est toujours ouvert, actualisez-le. Sinon, cliquez sur Web Preview > Preview on port 8080 (Aperçu sur le Web > Prévisualiser sur le port 8080).

Cliquez sur Take Test (Faire le test) > GCP.

Les questions que vous avez créées s'affichent.

end_quiz.png

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.