README
¶
pg
用于golang database/sql 的PostgreSQL驱动
Go Version Support
PostgreSQL Version Support
安装
go get github.com/blusewang/pg
使用
通用查询
db, err := sql.Open(pg.DriverName, "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 bluse where id>$1", 0)
if err != nil {
return err
}
...
异步订阅
md, err := dsn.ParseDSN("pg://user:password@dbhost.yourdomain.com/database_name?application_name=app_name&sslmode=verify-full")
if err != nil {
return
}
c, err := pg.New(context.Background(), md)
if err != nil {
return
}
_, err = c.QueryNoArgs("listen abc")
if err != nil {
_ = c.Terminate()
return
}
for {
n, ok := <-c.NotifyChan
if !ok {
log.Println(c.IOError)
return
}
log.Println(n.Condition, n.Text)
}
文档
更多的细节及使用示例,参见: https://pkg.go.dev/github.com/blusewang/pg.
特性
- Scan() 时允许传入指针,完美对应数据库中的
null
- 所有查询全部自动
prepare
并缓存。 - 支持
pg://
前缀的URI - 支持
Listen
式的异步消息订阅
配置要求
- 配置上需将
sql.SetMaxIdleConns(x)
、sql.SetMaxOpenConns(x)
两处的x设置为相同的值,才能让缓存实现价值。
协议实现
- 本驱动是为Web服务而设计
状态 | 功能 | 备注 |
---|---|---|
|
启动 | 支持:无密码、明文密码、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
。
License
Documentation
¶
Index ¶
Constants ¶
View Source
const DriverName = "pg"
Variables ¶
This section is empty.
Functions ¶
func NewConnector ¶
Types ¶
Click to show internal directories.
Click to hide internal directories.