Associe o psycopg3 a uma base de dados de dialeto PostgreSQL

Esta página explica como ligar o controlador psycopg3 do PostgreSQL a uma base de dados de dialeto PostgreSQL no Spanner. psycopg3 é um controlador Python para o PostgreSQL.

  1. Verifique se o PGAdapter está a ser executado na mesma máquina que a aplicação que está a estabelecer ligação através do controlador psycopg3 do PostgreSQL.

    export GOOGLE_APPLICATION_CREDENTIALS=/CREDENTIALS_FILE_PATH/credentials.json
    docker pull gcr.io/cloud-spanner-pg-adapter/pgadapter
    docker run \
      -d -p 5432:5432 \
      -v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \
      -e GOOGLE_APPLICATION_CREDENTIALS \
      gcr.io/cloud-spanner-pg-adapter/pgadapter \
      -p PROJECT_NAME -i INSTANCE_NAME \
      -x
    

    Para mais informações, consulte o artigo Inicie o PGAdapter.

  2. Ligue-se ao PGAdapter através de TCP.

    import psycopg
    
    with psycopg.connect("host=APPLICATION_HOST port=PORT dbname=DATABASE_NAME sslmode=disable") as conn:
      conn.autocommit = True
      with conn.cursor() as cur:
        cur.execute("select 'Hello world!' as hello")
        print("Greeting from Cloud Spanner PostgreSQL:", cur.fetchone()[0])
    

    Substitua o seguinte:

    • APPLICATION_HOST: o nome de anfitrião ou o endereço IP da máquina onde o PGAdapter está em execução. Se estiver a executar localmente, use localhost.
    • PORT: o número da porta onde o PGAdapter está a ser executado. Altere isto na string de ligação se o PGAdapter estiver a ser executado numa porta personalizada. Caso contrário, use a porta predefinida, 5432.

Sockets de domínio Unix

Esta secção explica como usar sockets de domínio Unix para estabelecer ligação a uma base de dados de dialeto PostgreSQL. Use sockets de domínio Unix para a latência mais baixa possível.

Para usar sockets de domínio Unix, o PGAdapter tem de estar em execução no mesmo anfitrião que a aplicação cliente.

Verifique se o controlador JDBC do PostgreSQL está carregado.

import psycopg

with psycopg.connect("host=/tmp
                      port=PORT
                      dbname=DATABASE_NAME") as conn:
conn.autocommit = True
with conn.cursor() as cur:
  cur.execute("select 'Hello world!' as hello")
  print("Greetings from Cloud Spanner PostgreSQL:", cur.fetchone()[0])

Substitua o seguinte:

  • /tmp: o diretório de soquetes de domínio predefinido para o PGAdapter. Pode alterar esta definição através do argumento de linha de comandos -dir.
  • PORT: o número da porta onde o PGAdapter está a ser executado. Altere isto na string de ligação se o PGAdapter estiver a ser executado numa porta personalizada. Caso contrário, use a porta predefinida, 5432.

O que se segue?

  • Saiba mais acerca do PGAdapter.
  • Para mais informações sobre as opções de ligação do controlador psycopg3 do PostgreSQL, consulte as opções de ligação do psycopg3 no repositório do GitHub do PGAdapter.