本页介绍了如何将 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
。