En esta página se explica cómo conectar el controlador psycopg3 de PostgreSQL a una base de datos de dialecto PostgreSQL en Spanner. psycopg3
es un controlador de Python para PostgreSQL.
Verifica que PGAdapter se esté ejecutando en la misma máquina que la aplicación que se conecta mediante el controlador psycopg3 de 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 obtener más información, consulta Iniciar PGAdapter.
Conéctate a PGAdapter mediante 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])
Haz los cambios siguientes:
- APPLICATION_HOST: el nombre de host o la dirección IP de la máquina en la que se ejecuta PGAdapter. Si se ejecuta de forma local, usa
localhost
. - PORT: número de puerto en el que se ejecuta PGAdapter. Cambia este valor en la cadena de conexión si PGAdapter se ejecuta en un puerto personalizado. De lo contrario, usa el puerto predeterminado,
5432
.
- APPLICATION_HOST: el nombre de host o la dirección IP de la máquina en la que se ejecuta PGAdapter. Si se ejecuta de forma local, usa
Sockets de dominio Unix
En esta sección se explica cómo usar sockets de dominio Unix para conectarse a una base de datos de dialecto PostgreSQL. Usa sockets de dominio Unix para conseguir la latencia más baja posible.
Para usar sockets de dominio Unix, PGAdapter debe ejecutarse en el mismo host que la aplicación cliente.
Comprueba que el controlador JDBC de PostgreSQL esté cargado.
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])
Haz los cambios siguientes:
- /tmp: directorio de sockets de dominio predeterminado de PGAdapter. Esto se puede cambiar mediante el argumento de línea de comandos
-dir
. - PORT: número de puerto en el que se ejecuta PGAdapter. Cambia este valor en la cadena de conexión si PGAdapter se ejecuta en un puerto personalizado. De lo contrario, usa el puerto predeterminado,
5432
.
Siguientes pasos
- PGAdapter
- Para obtener más información sobre las opciones de conexión del controlador psycopg3 de PostgreSQL, consulta las opciones de conexión de psycopg3 en el repositorio de GitHub de PGAdapter.