Connettere pgx a un database in dialetto PostgreSQL

Questa pagina spiega come connettere il driver pgx di PostgreSQL a un database di dialetti PostgreSQL in Spanner. pgx è un driver Golang per PostgreSQL.

Verifica che PGAdapter sia in esecuzione sulla stessa macchina dell'applicazione che si connette mediante il driver pgx di PostgreSQL.

Per saperne di più, consulta Avvia PGAdapter.

  • pgx richiede un nome utente e una password nella stringa di connessione. PGAdapter li ignora.
  • Per impostazione predefinita, PGAdapter disabilita SSL. pgx per impostazione predefinita tenta prima di connettersi con SSL abilitato. La disattivazione di SSL nella richiesta di connessione velocizza il processo di connessione, in quanto richiede un round trip in meno.
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)

Sostituisci quanto segue:

  • APPLICATION_HOST: il nome host o l'indirizzo IP della macchina in cui è in esecuzione PGAdapter. In caso di esecuzione locale, puoi utilizzare localhost.
  • PORT: il numero di porta su cui è in esecuzione PGAdapter. Se PGAdapter è in esecuzione su una porta personalizzata, modifica questa impostazione nella stringa di connessione. Altrimenti, utilizza la porta predefinita 5432.

Socket di dominio Unix

Questa sezione spiega come utilizzare i socket di dominio Unix per connettere il driver pgx di PostgreSQL a un database di dialetti PostgreSQL. Utilizza i socket di dominio Unix per la latenza più bassa possibile.

Per utilizzare i socket di dominio Unix, PGAdapter deve essere in esecuzione sullo stesso host dell'applicazione client.

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)

Sostituisci quanto segue:

  • /tmp: la directory dei socket di dominio predefinita per PGAdapter. Puoi cambiarla utilizzando l'argomento della riga di comando -dir.
  • PORT: il numero di porta su cui è in esecuzione PGAdapter. Se PGAdapter è in esecuzione su una porta personalizzata, modifica questa impostazione nella stringa di connessione. Altrimenti, utilizza la porta predefinita 5432.

Passaggi successivi