arrow_back

Desarrollo de aplicaciones: Cómo almacenar datos de aplicaciones en Cloud Datastore - Python

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Desarrollo de aplicaciones: Cómo almacenar datos de aplicaciones en Cloud Datastore - Python

Lab 50 minutos universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP184

Labs de autoaprendizaje de Google Cloud

Descripción general

Google Cloud Datastore es una base de datos de documentos NoSQL creada para proporcionar ajuste de escala automático, alto rendimiento y facilidad de desarrollo de aplicaciones. En este lab, utilizarás Datastore para almacenar datos de una aplicación en línea llamada Quiz. También configurarás la aplicación para que recupere datos de Datastore y los muestre en el cuestionario.

La estructura de la aplicación Quiz ya está escrita. Puedes clonar el repositorio que contiene la estructura con Google Cloud Shell, revisar el código con el editor de Cloud Shell y visualizarlo con la función de vista previa en la Web de Cloud Shell. A continuación, modifica el código que almacena los datos para utilizar Cloud Datastore.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Aprovechar Cloud Shell como tu entorno de desarrollo
  • Obtener una vista previa de la aplicación
  • Actualizar el código de la aplicación para integrar Cloud Datastore

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Inicia el editor de código de Cloud Shell

  • Desde Cloud Shell, haz clic en el ícono Abrir editor para abrir el editor de código. Es posible que tengas que hacer clic en Abrir en una ventana nueva.

El botón Abrir editor.

Nota: El editor de código se abre en una pestaña nueva del navegador.

Tarea 1: Crea un entorno virtual

  1. Haz clic en el ícono Abrir terminal.

Se utilizan entornos virtuales de Python para aislar del sistema la instalación de paquetes.

virtualenv -p python3 vrenv
  1. Activa el entorno virtual:
source vrenv/bin/activate

Tarea 2: Prepara la aplicación Quiz

El repositorio que contiene la aplicación Quiz se encuentra en GitHub.com. En esta sección, usarás Cloud Shell para ingresar comandos que clonan el repositorio y ejecutan la aplicación.

Clona el código fuente en Cloud Shell

  • Clona el repositorio para la clase con el siguiente comando:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst

Configura y ejecuta la aplicación Quiz

  1. Cambia el directorio de trabajo:

    cd ~/training-data-analyst/courses/developingapps/python/datastore/start
  2. Exporta una variable de entorno, GCLOUD_PROJECT, que haga referencia al ID del proyecto:

    export GCLOUD_PROJECT=$DEVSHELL_PROJECT_ID Nota: ID del proyecto en Cloud Shell

    Mientras trabajas en Cloud Shell, tendrás acceso al ID del proyecto en la variable de entorno $DEVSHELL_PROJECT_ID.
  3. Instala las dependencias de la aplicación; puedes ignorar las advertencias de incompatibilidad:

    pip install -r requirements.txt
  4. Ejecuta la aplicación:

    python run_server.py

    Cuando veas un mensaje similar al siguiente, significa que la aplicación se está ejecutando:

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

Revisa la aplicación Quiz

  1. En Cloud Shell, haz clic en Vista previa en la Web > Vista previa en el puerto 8080 para obtener una vista previa de la aplicación Quiz.

    La opción &quot;Vista previa en el puerto 8080&quot; se encuentra resaltada en el menú de Vista previa en la Web.

    Deberías ver la interfaz de usuario de la aplicación web. Las tres partes principales de la aplicación son las siguientes:

    • Crear pregunta
    • Realizar cuestionario
    • Tabla de clasificación

    La página de bienvenida de Quite Interesting Quiz, que tiene tres partes: Crear pregunta, Realizar cuestionario y Tabla de clasificación.

  2. En la barra de navegación, haz clic en Crear pregunta.

    Debería aparecer un formulario simple que contiene cuadros de texto para las preguntas y respuestas, y botones de selección que permiten elegir la respuesta correcta.

    Nota: Los autores del cuestionario pueden agregar preguntas en esta parte de la aplicación, que se escribió como una aplicación web del servidor con Flask, el conocido framework de aplicaciones web de Python.
  3. En la barra de navegación, haz clic en Realizar cuestionario y, luego, en GCP para acceder a las preguntas de Google Cloud.

    Deberías ver una pregunta de muestra.

    La plantilla de preguntas de muestra junto con las respuestas de muestra y el botón Enviar respuesta.

    Quienes completen el cuestionario responderán las preguntas en esta parte de la aplicación.

    Nota: Esta parte de la aplicación está escrita como una aplicación web del cliente.
  4. Para volver a la aplicación del servidor, haz clic en el vínculo Quite Interesting Quiz en la barra de navegación.

Tarea 3: Examina el código de la aplicación Quiz

En este lab, verás y editarás archivos. Puedes usar los editores de shell que están instalados en Cloud Shell, como nano o vim, o bien el editor de código de Cloud Shell.

En este lab, se usa el editor de código de Cloud Shell para revisar el código de la aplicación Quiz.

Revisa la aplicación web de Flask

  1. Usa el panel del navegador de archivos ubicado en la parte izquierda del editor para navegar hasta la carpeta /training-data-analyst/courses/developingapps/python/datastore/start.
Nota: Las rutas de acceso serán relativas a esta carpeta. Esta es una aplicación estándar de Python, escrita con el popular framework de aplicaciones Flask.
  1. Selecciona el archivo ...run_server.py.

    Este archivo contiene el punto de entrada de la aplicación, y la ejecuta en el puerto 8080.

  2. Selecciona el archivo ...quiz/_init_.py.

    Este archivo importa rutas para la aplicación web y la API de REST.

  3. Selecciona los archivos ...quiz/webapp/questions.py y ...quiz/webapp/routes.py.

    Estos archivos contienen las rutas que mapean los URI a los controladores que muestran el formulario y recopilan los datos publicados por los autores del cuestionario en la aplicación web.

  4. Selecciona la carpeta ...quiz/webapp/templates.

    Esta carpeta contiene plantillas para la interfaz de usuario de la aplicación web que utiliza plantillas Jinja2.

  5. Visualiza el archivo ...quiz/webapp/templates/add.html.

    Este archivo contiene la plantilla Jinja2 correspondiente al formulario Create Question.

    Observa que hay una lista de selección para elegir un cuestionario; cuadros de texto donde un autor puede ingresar la pregunta y las respuestas, y botones de selección para elegir la respuesta correcta.

  6. Selecciona el archivo ...quiz/api/api.py.

    Este archivo contiene el controlador que envía datos JSON a los estudiantes que realizan una prueba.

  7. Selecciona el archivo ...quiz/gcp/datastore.py.

    Este es el archivo donde se escribe el código de Datastore para guardar las preguntas del cuestionario en Cloud Datastore y cargarlas desde allí.

Este módulo se importará en la aplicación web y la API.

Tarea 4: Agrega entidades a Cloud Datastore

En esta sección, escribirás el código para guardar los datos del formulario en Cloud Datastore.

Nota: Actualiza el código dentro de las secciones marcadas de la siguiente manera:

# TODO

# END TODO

Para profundizar tus conocimientos, intenta escribir el código sin consultar el bloque de código completado al final de la sección. Además, revisa el código, los comentarios intercalados y la documentación de la API de Datastore Client para Cloud Datastore.

Crea una aplicación de App Engine para aprovisionar Cloud Datastore

  1. Regresa a Cloud Shell y presiona Ctrl + C para detener la aplicación.

  2. Para crear una aplicación de App Engine en tu proyecto, ingresa lo siguiente:

    gcloud app create --region "{{{project_0.startup_script.app_region | REGION }}}"

Cuando se haya creado la aplicación de App Engine, verás este mensaje:

Creating App Engine application in project [qwiklabs-gcp-f67238775c00cfaa] and region {{{project_0.startup_script.app_region | REGION}}}....done. Success! The app is now created. Please use `gcloud app deploy` to deploy your first app. Nota: Aún no estás utilizando App Engine para tu aplicación web. Sin embargo, Cloud Datastore requiere que crees una aplicación de App Engine en tu proyecto.

Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.

Crear una aplicación de App Engine

Importa y usa el módulo de Datastore de Python

  1. Abre el archivo ...quiz/gcp/datastore.py en el editor de Cloud Shell y agrega el código Updated datastore.py a continuación para realizar lo siguiente:

  2. Importar el módulo os

  3. Utilizar el módulo os para obtener la variable de entorno GCLOUD_PROJECT

  4. Importar el módulo datastore del paquete google.cloud

  5. Declarar un objeto de cliente datastore.Client denominado datastore_client

Archivo datastore.py actualizado

# 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

Escribe el código para crear una entidad de Cloud Datastore

  1. En ...quiz/gcp/datastore.py, dirígete a la función save_question() y quita la sentencia existente pass del marcador de posición. Agrega el siguiente código de función datastore.py - save_question() para realizar lo siguiente:
  • Usar el objeto de cliente de Datastore para crear una clave para una entidad de Datastore cuyo tipo sea 'Question'
  • Usar Datastore para crear una entidad question de Datastore con la clave
  • Iterar sobre los elementos en el diccionario de valores obtenidos del formulario de la aplicación web
  • En el cuerpo del bucle, asignar cada clave y valor al objeto de entidad de Datastore
  • Utilizar el cliente de Datastore para guardar los datos

Función datastore.py - 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
  1. Guarda datastore.py.

Ejecuta la aplicación y crea una entidad de Cloud Datastore

  1. Guarda el archivo ...quiz/gcp/datastore.py y, luego, regresa al símbolo del sistema de Cloud Shell.
  2. Para ejecutar la aplicación, utiliza el siguiente comando:
python run_server.py
  1. En Cloud Shell, haz clic en Vista previa en la Web > Vista previa en el puerto 8080 para obtener una vista previa de la aplicación Quiz.
  2. Haz clic en Crear pregunta.
  3. Completa el formulario con los siguientes valores y haz clic en Guardar.

Campo del formulario

Valor

Author

Your Name

Quiz

Google Cloud Platform

Título

Which company owns Google Cloud?

Respuesta 1

Amazon

Respuesta 2

Google (marca el botón de selección Respuesta 2)

Respuesta 3

IBM

Respuesta 4

Microsoft

Deberías regresar a la página principal de la aplicación.

  1. Vuelve a la consola, haz clic en el menú de navegación > Datastore.
  2. Selecciona la base de datos predeterminada y haz clic en Entidades.

Deberías ver tu nueva pregunta.

Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.

Crear una entidad de Cloud Datastore

Recupera las entidades de Cloud Datastore

En esta sección, escribirás el código para recuperar datos de entidades de Cloud Datastore y ver tu pregunta en la aplicación.

Escribe el código para recuperar entidades de Cloud Datastore

  1. En el editor de código, abre el archivo ...quiz/gcp/datastore.py, quita el código de la función list_entities(quiz, redact) y reemplázalo por una consulta que realice lo siguiente:
  • Recuperar las entidades de pregunta para un cuestionario específico de Cloud Datastore
  • Utilizar el cliente de Datastore para recuperar la consulta y usar los datos que se muestran para crear una lista
  • Enumerar la lista de elementos y promover el identificador de clave de cada entidad a una propiedad de nivel superior
  • Mostrar los resultados
  1. Reemplaza este código:
""" 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'}] """

Por este código:

""" 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 """
  1. Guarda datastore.py.

Ejecuta la aplicación y prueba la consulta de Cloud Datastore

Ahora realiza lo siguiente para probar si tu pregunta se recupera de Datastore y se carga en tu aplicación Quiz.

  1. En Cloud Shell, presiona Ctrl + C para detener la aplicación y, luego, reiníciala:
python run_server.py
  1. Obtén una vista previa del cuestionario. Si el navegador que ejecuta el cuestionario sigue abierto, vuelve a cargarlo. De lo contrario, haz clic en Vista previa en la Web > Vista previa en el puerto 8080.

  2. Haz clic en Realizar cuestionario > GCP.

Deberías ver las preguntas que creaste.

La pregunta del cuestionario, junto con una lista de respuestas posibles y el botón Enviar respuesta.

¡Felicitaciones!

Aquí finaliza el lab de autoaprendizaje Desarrollo de aplicaciones: Cómo almacenar datos de aplicaciones en Cloud Datastore - Python. Usaste Datastore para almacenar datos de la aplicación en línea Quiz. También configuraste la aplicación para recuperar los datos y mostrarlos en el cuestionario.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de la Quest Application Development - Python. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en esta Quest o en cualquiera que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Próximos pasos y más información

Última actualización del manual: 16 de octubre de 2023

Prueba más reciente del lab: 18 de octubre de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.