Almacena y recupera datos

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.

Obtén más información acerca de los ID de región.

Actualiza tu servicio web para conectarte a los datos y administrarlos a través de Firestore en modo Datastore (Datastore). Usa las bibliotecas cliente de Datastore a fin de conectar el servicio web a Datastore, una base de datos no relacional (NoSQL) creada con el fin de proporcionar ajuste de escala automático, alto rendimiento y facilidad para el desarrollo de aplicaciones.

En este paso, actualizarás el servicio web para que almacene datos de solicitud de página en Datastore y, luego, muestre una lista de las últimas diez solicitudes de página. El objetivo es lograr que el almacenamiento de datos de tu servicio web funcione antes de agregar Firebase Authentication y personalizar el almacenamiento de datos para usuarios autenticados.

Antes de comenzar

Si completaste todos los pasos anteriores de esta guía, omite esta sección. De lo contrario, sigue una de las siguientes instrucciones:

  • Comienza desde Compila una app de Python 3 y completa todos los pasos previos a este.

  • Si ya tienes un proyecto de Google Cloud, puedes descargar una copia del servicio web para continuar:

    1. Descarga el repositorio de aplicaciones de muestra con Git:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      Si no, puedes descargar la muestra como un archivo ZIP y, luego, descomprimirlo.

    2. Dirígete al directorio que contiene una copia de los archivos del paso anterior:

      cd python-docs-samples/appengine/standard_python3/building-an-app/building-an-app-1
      
    3. Habilita la API de Datastore:

      gcloud services enable datastore.googleapis.com
      

Almacena y recupera entidades de Datastore

Para almacenar y recuperar los tiempos de las solicitudes de sitio como entidades de Datastore, completa lo siguiente:

  1. Agrega el siguiente código a tu archivo main.py:

    from google.cloud import datastore
    
    datastore_client = datastore.Client()
    
    def store_time(dt):
        entity = datastore.Entity(key=datastore_client.key("visit"))
        entity.update({"timestamp": dt})
    
        datastore_client.put(entity)
    
    
    def fetch_times(limit):
        query = datastore_client.query(kind="visit")
        query.order = ["-timestamp"]
    
        times = query.fetch(limit=limit)
    
        return times
    
    

    El método store_time anterior usa las bibliotecas cliente de Datastore para crear una entidad nueva en Datastore. Las entidades de Datastore son objetos de datos que constan de claves y propiedades. En este caso, la clave de la entidad es su tipo personalizado, visit. La entidad también tiene una propiedad, timestamp, que contiene la hora de una solicitud de página.

    El método fetch_times usa la clave visit para consultar la base de datos por las diez entidades visit más recientes y, luego, las almacena en una lista en orden descendente.

  2. Actualiza tu método root para llamar a los métodos nuevos:

    @app.route("/")
    def root():
        # Store the current access time in Datastore.
        store_time(datetime.datetime.now(tz=datetime.timezone.utc))
    
        # Fetch the most recent 10 access times from Datastore.
        times = fetch_times(10)
    
        return render_template("index.html", times=times)
    
    
  3. Actualiza el archivo templates/index.html para imprimir la timestamp de cada entidad:

    <h2>Last 10 visits</h2>
    {% for time in times %}
      <p>{{ time['timestamp'] }}</p>
    {% endfor %}
  4. Asegúrate de que el archivo requirements.txt incluya todas las dependencias necesarias:

    Flask==3.0.0
    google-cloud-datastore==2.15.1
    

Para obtener más información sobre las entidades, las propiedades y las claves de Datastore, consulta Entidades, propiedades y claves. Para obtener más información sobre el uso de las bibliotecas cliente de Datastore, consulta Bibliotecas cliente de Datastore.

Prueba tu servicio web

Para probar un servicio web, ejecútalo de forma local en un entorno virtual:

  1. Ejecuta los siguientes comandos en el directorio principal del proyecto para instalar nuevas dependencias y ejecutar tu servicio web. Si no configuraste un entorno virtual para las pruebas locales, consulta Prueba tu servicio web.

    pip install -r requirements.txt
    python main.py
    
  2. Ingresa la siguiente dirección en el navegador web para ver tu servicio web:

    http://localhost:8080
    

Puedes ver las entidades que crea el servicio web en la consola de Google Cloud

Ir a la página Entidades de Datastore

Implementar tu servicio web

Ahora que Datastore funciona de manera local, puedes volver a implementar el servicio web en App Engine.

Ejecuta el siguiente comando desde el directorio raíz de tu proyecto, en el que se encuentra el archivo app.yaml:

gcloud app deploy

Todo el tráfico se enruta automáticamente a la nueva versión que implementaste.

Para obtener más información sobre la administración de versiones, consulta Cómo administrar servicios y versiones.

Cómo ver tu servicio

Para iniciar el navegador y acceder al servicio web en https://PROJECT_ID.REGION_ID.r.appspot.com con rapidez, ejecuta el siguiente comando:

gcloud app browse

Próximos pasos

Ahora que Datastore funciona en tu servicio web, estás listo para aprender a agregar Firebase al servicio.