将 pgx 连接到 PostgreSQL 方言数据库

本页介绍了如何将 PostgreSQL pgx 驱动程序连接到 Spanner 中的 PostgreSQL 方言数据库。pgx 是 PostgreSQL 的 Golang 驱动程序。

验证 PGAdapter 是否与使用 PostgreSQL pgx 驱动程序连接的应用位于同一台机器上。

如需了解详情,请参阅启动 PGAdapter

  • pgx 需要在连接字符串中提供用户名和密码。 PGAdapter 会忽略这些。
  • 默认情况下,PGAdapter 会停用 SSL。pgx 默认情况下,会首先尝试在启用 SSL 的情况下进行连接。在连接请求中停用 SSL 可加快连接过程,因为它需要的往返次数会减少一次。
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)

替换以下内容:

  • APPLICATION_HOST:运行 PGAdapter 的机器的主机名或 IP 地址。如果在本地运行,您可以使用 localhost
  • PORT:PGAdapter 运行的端口号。如果 PGAdapter 在自定义端口上运行,请在连接字符串中更改此设置。否则,请使用默认端口 5432

Unix 网域套接字

本部分介绍如何使用 Unix 域套接字将 PostgreSQL pgx 驱动程序连接到 PostgreSQL 方言数据库。使用 Unix 网域套接字可实现尽可能低的延迟时间。

如需使用 Unix 域套接字,PGAdapter 必须与客户端应用在同一主机上运行。

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)

替换以下内容:

  • /tmp:PGAdapter 的默认网域套接字目录。您可以使用 -dir 命令行实参更改此设置。
  • PORT:PGAdapter 运行的端口号。如果 PGAdapter 在自定义端口上运行,请在连接字符串中更改此设置。否则,请使用默认端口 5432

后续步骤