Conectar o pgx a um banco de dados do dialeto PostgreSQL

Nesta página, explicamos como conectar o driver pgx do PostgreSQL a um banco de dados de dialeto do PostgreSQL no Spanner. pgx é um driver do Go para PostgreSQL.

Verifique se o PGAdapter está em execução na mesma máquina que o aplicativo que está se conectando usando o driver pgx do PostgreSQL.

Para mais informações, consulte Iniciar o PGAdapter.

  • O pgx exige um nome de usuário e uma senha na string de conexão. O PGAdapter ignora esses comandos.
  • Por padrão, o PGAdapter desativa o SSL. Por padrão, o pgx primeiro tenta se conectar com o SSL ativado. Desativar o SSL na solicitação de conexão acelera o processo, já que exige uma viagem de ida e volta a 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)

Substitua:

  • APPLICATION_HOST: o nome do host ou endereço IP da máquina em que o PGAdapter está sendo executado. Se você estiver executando localmente, use localhost.
  • PORT: o número da porta em que o PGAdapter está em execução. Mude isso na string de conexão se o PGAdapter estiver sendo executado em uma porta personalizada. Caso contrário, use a porta padrão, 5432.

Soquetes de domínio Unix

Nesta seção, explicamos como usar soquetes de domínio Unix para conectar o driver pgx do PostgreSQL a um banco de dados de dialeto PostgreSQL. Use soquetes de domínio Unix para ter a menor latência possível.

Para usar soquetes de domínio Unix, o PGAdapter precisa estar em execução no mesmo host que o aplicativo 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)

Substitua:

  • /tmp: o diretório de soquete de domínio padrão para PGAdapter. Isso pode ser mudado usando o argumento de linha de comando -dir.
  • PORT: o número da porta em que o PGAdapter está em execução. Mude isso na string de conexão se o PGAdapter estiver sendo executado em uma porta personalizada. Caso contrário, use a porta padrão, 5432.

A seguir