pgx mit einer Datenbank in PostgreSQL-Dialekt verbinden

Auf dieser Seite wird erläutert, wie Sie den PostgreSQL-pgx-Treiber mit einer Datenbank mit PostgreSQL-Dialekt in Spanner verbinden. pgx ist ein Golang-Treiber für PostgreSQL.

Prüfen Sie, ob PGAdapter auf demselben Computer wie die Anwendung ausgeführt wird, die eine Verbindung mit dem PostgreSQL-pgx-Treiber herstellt.

Weitere Informationen finden Sie unter PGAdapter starten.

  • Für pgx sind ein Nutzername und ein Passwort im Verbindungsstring erforderlich. PGAdapter ignoriert diese.
  • Standardmäßig deaktiviert PGAdapter SSL. pgx versucht standardmäßig zuerst, eine Verbindung mit aktivierter SSL-Verschlüsselung herzustellen. Wenn Sie SSL in der Verbindungsanfrage deaktivieren, wird der Verbindungsvorgang beschleunigt, da ein Roundtrip weniger erforderlich ist.
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)

Ersetzen Sie Folgendes:

  • APPLICATION_HOST: der Hostname oder die IP-Adresse des Computers, auf dem PGAdapter ausgeführt wird. Bei einer lokalen Ausführung können Sie localhost verwenden.
  • PORT: Die Portnummer, unter der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport 5432.

Unix Domain Sockets

In diesem Abschnitt wird beschrieben, wie Sie Unix-Domain-Sockets verwenden, um den PostgreSQL-pgx-Treiber mit einer Datenbank mit PostgreSQL-Dialekt zu verbinden. Verwenden Sie Unix-Domain-Sockets, um die Latenz so gering wie möglich zu halten.

Wenn Sie Unix-Domain-Sockets verwenden möchten, muss PGAdapter auf demselben Host wie die Clientanwendung ausgeführt werden.

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)

Ersetzen Sie Folgendes:

  • /tmp: Das Standardverzeichnis für Domain-Sockets für PGAdapter. Dies kann mit dem Befehlszeilenargument -dir geändert werden.
  • PORT: Die Portnummer, unter der PGAdapter ausgeführt wird. Ändern Sie dies im Verbindungsstring, wenn PGAdapter auf einem benutzerdefinierten Port ausgeführt wird. Verwenden Sie andernfalls den Standardport 5432.

Nächste Schritte