
pgx PostgreSQL的纯Go驱动程序和工具包
声明:该文章由作者(王雯)发表,转载此文章须经作者同意并请附上出处(0XUCN)及本页链接。。
pgx 是用于 PostgreSQL 的纯 Go 驱动程序和工具包。
pgx 驱动程序是一个低级、高性能的接口,它 expose 了 PostgreSQL 特有的功能,如 LISTEN / NOTIFY 和 COPY。它还包括一个标准 database/sql 接口适配器。
工具包组件是一组相关的软件包,用于实现 PostgreSQL 的功能,如解析线协议和 PostgreSQL 与 Go 之间的类型映射。这些底层软件包可用于实现替代驱动程序、代理、负载平衡器、逻辑复制客户端等。
用法示例:
package main import ( "context" "fmt" "os" "github.com/jackc/pgx/v5" ) func main() { // urlExample := "postgres://username:password@localhost:5432/database_name" conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL")) if err != nil { fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err) os.Exit(1) } defer conn.Close(context.Background()) var name string var weight int64 err = conn.QueryRow(context.Background(), "select name, weight from widgets where id=$1", 42).Scan(&name, &weight) if err != nil { fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err) os.Exit(1) } fmt.Println(name, weight) }
特性:
支持大约 70 种不同的 PostgreSQL 类型
自动语句准备和缓存
批量查询
单次往返查询方式
完整的 TLS 连接控制
对自定义类型的二进制格式支持(允许更快的编码 / 解码)
COPY 协议支持,实现更快的批量数据加载
Tracing 和 logging 支持
带有 after-connect hook 的连接池,用于任意连接设置
LISTEN/NOTIFY
将 PostgreSQL 数组转换为整数、浮点数和字符串的 Go 切片映射
hstore 支持
json 和 jsonb 支持
将 inet 和 cidrPostgreSQL 类型映射为 netip.Addr 和 netip.Prefix
Large object 支持
NULL 映射为 pointer to pointer
支持自定义类型的 database/sql.Scanner 和 database/sql/driver.Valuer 接口
通知响应处理
使用保存点模拟嵌套事务
[超站]友情链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
- 1 推动中哥战略伙伴关系走深走实 7904808
- 2 郑钦文创历史 生涯首胜萨巴伦卡 7808807
- 3 美国调整对华加征关税 7713805
- 4 外国人眼中的中国经济韧性 7617506
- 5 娃哈哈纯净水由今麦郎代工?客服回应 7523485
- 6 特朗普为何让步?美媒揭露真相 7425229
- 7 李亚鹏妻子自曝没钱 从大平层换小房 7332090
- 8 律所招聘 要求本科生游戏段位达王者 7234205
- 9 印度又断水:大坝关闭 下游河床裸露 7142875
- 10 曝曾犯强奸罪的教师出狱后开办教培 7044732