Introducción a Spanner en Python


Objetivos

Este tutorial lo guiará a través de los siguientes pasos utilizando la biblioteca cliente Spanner para Python:

  • Cree una instancia y una base de datos de Spanner.
  • Escribir, leer y ejecutar consultas SQL sobre datos de la base de datos.
  • Actualizar el esquema de la base de datos.
  • Actualizar datos mediante una transacción de lectura y escritura.
  • Agregar un índice secundario a la base de datos.
  • Utilice el índice para leer y ejecutar consultas SQL sobre los datos.
  • Recupere datos mediante una transacción de solo lectura.

Costos

Este tutorial utiliza Spanner, que es un componente facturable deGoogle CloudPara obtener información sobre el costo de usar Spanner, consulte Precios .

Antes de empezar

Complete los pasos descritos en Configuración , que cubren la creación y configuración de un valor predeterminado. Google Cloud proyecto, habilitar la facturación, habilitar la API de Cloud Spanner y configurar OAuth 2.0 para obtener credenciales de autenticación para usar la API de Cloud Spanner.

En particular, asegúrese de ejecutar gcloud auth application-default login para configurar su entorno de desarrollo local con credenciales de autenticación.

Utilice un objeto Snapshot para ejecutar transacciones de solo lectura. Para obtener un objeto Snapshot , llame al método snapshot() de la clase Database en una instrucción with .

A continuación se muestra cómo ejecutar una consulta y realizar una lectura en la misma transacción de solo lectura:

def read_only_transaction(instance_id, database_id):
    """Reads data inside of a read-only transaction.

    Within the read-only transaction, or "snapshot", the application sees
    consistent view of the database at a particular timestamp.
    """
    spanner_client = spanner.Client()
    instance = spanner_client.instance(instance_id)
    database = instance.database(database_id)

    with database.snapshot(multi_use=True) as snapshot:
        # Read using SQL.
        results = snapshot.execute_sql(
            "SELECT SingerId, AlbumId, AlbumTitle FROM Albums"
        )

        print("Results from first read:")
        for row in results:
            print("SingerId: {}, AlbumId: {}, AlbumTitle: {}".format(*row))

        # Perform another read using the `read` method. Even if the data
        # is updated in-between the reads, the snapshot ensures that both
        # return the same data.
        keyset = spanner.KeySet(all_=True)
        results = snapshot.read(
            table="Albums", columns=("SingerId", "AlbumId", "AlbumTitle"), keyset=keyset
        )

        print("Results from second read:")
        for row in results:
            print("SingerId: {}, AlbumId: {}, AlbumTitle: {}".format(*row))

Ejecute la muestra utilizando el argumento read_only_transaction .

python snippets.py test-instance --database-id example-db read_only_transaction

Debería ver un resultado similar a este:

Results from first read:
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
Results from second read:
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified

Limpieza

Para evitar incurrir en cargos adicionales en su cuenta de facturación de Cloud por los recursos utilizados en este tutorial, elimine la base de datos y borre la instancia que creó.

Eliminar la base de datos

Si elimina una instancia, todas sus bases de datos se eliminan automáticamente. Este paso muestra cómo eliminar una base de datos sin eliminar una instancia (aunque se le cobrarán cargos por la instancia).

En la línea de comandos

gcloud spanner databases delete example-db --instance=test-instance

Usando el Google Cloud consola

  1. Vaya a la página Instancias de Spanner en el Google Cloud consola.

    Ir a la página de Instancias

  2. Haga clic en la instancia.

  3. Haga clic en la base de datos que desea eliminar.

  4. En la página de detalles de la base de datos , haga clic en Eliminar .

  5. Confirme que desea eliminar la base de datos y haga clic en Eliminar .

Eliminar la instancia

Al eliminar una instancia se eliminan automáticamente todas las bases de datos creadas en esa instancia.

En la línea de comandos

gcloud spanner instances delete test-instance

Usando el Google Cloud consola

  1. Vaya a la página Instancias de Spanner en el Google Cloud consola.

    Ir a la página de Instancias

  2. Haga clic en su instancia.

  3. Haga clic en Eliminar .

  4. Confirme que desea eliminar la instancia y haga clic en Eliminar .

¿Qué sigue?