Conectar pgx a una base de datos con dialecto PostgreSQL

En esta página se explica cómo conectar el controlador pgx de PostgreSQL a una base de datos con dialecto PostgreSQL en Spanner. pgx es un controlador de Golang para PostgreSQL.

Verifica que PGAdapter se esté ejecutando en la misma máquina que la aplicación que se conecta mediante el controlador pgx de PostgreSQL.

Para obtener más información, consulta Iniciar PGAdapter.

  • pgx requiere un nombre de usuario y una contraseña en la cadena de conexión. PGAdapter los ignora.
  • De forma predeterminada, PGAdapter inhabilita SSL. pgx de forma predeterminada, primero intenta conectarse con SSL habilitado. Si se inhabilita SSL en la solicitud de conexión, se acelera el proceso de conexión, ya que requiere un viaje de ida y vuelta menos.
connString := "postgres://uid:pwd@APPLICATION_HOST:PORT/DATABASE_NAME?sslmode=disable"
ctx := context.Background()
conn, err := pgx.Connect(ctx, connString)
if err != nil {
  return err
}
defer conn.Close(ctx)

var greeting string
err = conn.QueryRow(ctx, "select 'Hello world!' as hello").Scan(&greeting)
if err != nil {
  return err
}
fmt.Printf("Greeting from Cloud Spanner PostgreSQL: %v\n", greeting)

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, puedes usar 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.

Sockets de dominio Unix

En esta sección se explica cómo usar sockets de dominio Unix para conectar el controlador pgx de PostgreSQL a una base de datos de dialecto PostgreSQL. Usa sockets de dominio Unix para obtener la latencia más baja posible.

Para usar sockets de dominio Unix, PGAdapter debe ejecutarse en el mismo host que la aplicación cliente.

connString := "host=/tmp port=PORT database=DATABASE_NAME"
ctx := context.Background()
conn, err := pgx.Connect(ctx, connString)
if err != nil {
    return err
}
defer conn.Close(ctx)

var greeting string
err = conn.QueryRow(ctx, "select 'Hello world!' as hello").Scan(&greeting)
if err != nil {
    return err
}
fmt.Printf("Greeting from Cloud Spanner PostgreSQL: %v\n", greeting)

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