pgx 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
pgx 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
pgx 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 白开水不加糖
适用人群 未知
收录时间 2023-10-12

软件简介

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支持
  • jsonjsonb支持
  • inetcidrPostgreSQL 类型映射为netip.Addrnetip.Prefix
  • Large object  支持
  • NULL 映射为 pointer to pointer
  • 支持自定义类型的database/sql.Scannerdatabase/sql/driver.Valuer接口
  • 通知响应处理
  • 使用保存点模拟嵌套事务
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
4 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部