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