用于golang database/sql 的PostgreSQL驱动
用于golang database/sql 的PostgreSQL驱动
null
prepare
并缓存。pg://
前缀的URIListen
式的异步消息订阅
go get github.com/blusewang/pg/v2
sql.Register("pg", pg.Driver{})
db, err := sql.Open("pg", "pg://user:password@dbhost.yourdomain.com/database_name?application_name=app_name&sslmode=verify-full")
if err != nil {
return err
}
defer db.Close()
rows, err := db.Query("select * from table_name where id>$1", 0)
if err != nil {
return err
}
...
l, err := pg.NewListener("pg://user:password@dbhost.yourdomain.com/database_name?application_name=app_name&sslmode=verify-full")
if err != nil {
return
}
if err := l.Listen("channel_name")); err != nil {
return
}
go func() {
time.Sleep(time.Minute)
_ = l.Terminate()
}()
for {
pid, channel, message, err := l.GetNotification()
if err == io.EOF {
return err
} else if err != nil {
return err
}
log.Println(pid, channel, message)
}
更多的细节及使用示例,参见: https://pkg.go.dev/github.com/blusewang/pg/v2.
sql.SetMaxIdleConns(x)
、sql.SetMaxOpenConns(x)
两处的x设置为相同的值,才能让缓存实现价值。状态 | 功能 | 备注 |
---|---|---|
|
启动 | 支持:无密码、明文密码、md5、SCRAM-SHA-256 |
|
简单查询 | 必备 |
|
扩展查询 | 必备 |
|
取消正在处理的请求 | 必备 |
|
终止 | 必备 |
|
SSL会话加密 | 远程安全 |
|
异步 | listen/notify |
暂不支持SCRAM-SHA-256-PLUS
。当pg_hba.conf
使用:
hostssl all all 0.0.0.0/0 scram-sha-256 clientcert=verify-full
时,Server会发类型为SCRAM-SHA-256-PLUS
类型的请求。此时客户端将自动降级至SCRAM-SHA-256
。