Introdução ao Spanner em Python


Objetivos

Este tutorial orienta você nas seguintes etapas usando a biblioteca de cliente Spanner para Python:

  • Crie uma instância e um banco de dados do Spanner.
  • Escreva, leia e execute consultas SQL em dados no banco de dados.
  • Atualize o esquema do banco de dados.
  • Atualizar dados usando uma transação de leitura e gravação.
  • Adicione um índice secundário ao banco de dados.
  • Use o índice para ler e executar consultas SQL em dados.
  • Recupere dados usando uma transação somente leitura.

Custos

Este tutorial usa o Spanner, que é um componente faturável doGoogle Cloud. Para obter informações sobre o custo de uso do Spanner, consulte Preços .

Antes de começar

Conclua as etapas descritas em Configuração , que abrangem a criação e a configuração de um padrão Google Cloud projeto, habilitando o faturamento, habilitando a API do Cloud Spanner e configurando o OAuth 2.0 para obter credenciais de autenticação para usar a API do Cloud Spanner.

Em particular, certifique-se de executar gcloud auth application-default login para configurar seu ambiente de desenvolvimento local com credenciais de autenticação.

Use um objeto Snapshot para executar transações somente leitura. Para obter um objeto Snapshot , chame o método snapshot() da classe Database em uma instrução with .

A seguir, é mostrado como executar uma consulta e realizar uma leitura na mesma transação somente leitura:

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))

Execute o exemplo usando o argumento read_only_transaction .

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

Você deverá ver uma saída semelhante a:

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

Limpar

Para evitar cobranças adicionais na sua conta do Cloud Billing pelos recursos usados ​​neste tutorial, elimine o banco de dados e exclua a instância que você criou.

Excluir o banco de dados

Se você excluir uma instância, todos os bancos de dados contidos nela serão excluídos automaticamente. Esta etapa mostra como excluir um banco de dados sem excluir uma instância (você ainda incorrerá em cobranças pela instância).

Na linha de comando

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

Usando o Google Cloud console

  1. Vá para a página Instâncias do Spanner no Google Cloud console.

    Vá para a página Instâncias

  2. Clique na instância.

  3. Clique no banco de dados que você deseja excluir.

  4. Na página Detalhes do banco de dados , clique em Excluir .

  5. Confirme que deseja excluir o banco de dados e clique em Excluir .

Excluir a instância

A exclusão de uma instância remove automaticamente todos os bancos de dados criados nela.

Na linha de comando

gcloud spanner instances delete test-instance

Usando o Google Cloud console

  1. Vá para a página Instâncias do Spanner no Google Cloud console.

    Vá para a página Instâncias

  2. Clique na sua instância.

  3. Clique em Excluir .

  4. Confirme que deseja excluir a instância e clique em Excluir .

O que vem a seguir