一个更快,数据类型支持更精准的 golang PostgreSQL 驱动

用于golang database/sql 的PostgreSQL驱动

《一个更快,数据类型支持更精准的 golang PostgreSQL 驱动》
《一个更快,数据类型支持更精准的 golang PostgreSQL 驱动》
《一个更快,数据类型支持更精准的 golang PostgreSQL 驱动》

Go Version Support

《一个更快,数据类型支持更精准的 golang PostgreSQL 驱动》

PostgreSQL Version Support

《一个更快,数据类型支持更精准的 golang PostgreSQL 驱动》
《一个更快,数据类型支持更精准的 golang PostgreSQL 驱动》

安装

go get github.com/blusewang/pg

使用


    db, err := sql.Open("pg", "postgresql://user:password@host_name/database_name?application_name=app_name")
    if err != nil {
        return err
    }
    defer db.Close()
    rows, err := db.Query("select * from bluse where id>$1", 0)
    if err != nil {
        return err
    }
    ...

文档

更多的细节及使用示例,参见: https://godoc.org/github.com/….

特性

  • Scan()时,对null值宽容。不推荐使用sql.Null系列类型,接受null值!

    • 以字符串字段的null值为例:向Scan()中传 string型的变量,得到 "",传 *string型的变量,得到 nil
  • 常见Array类型直接兼容golang的数组类型。如PG的:integer[],对应golang的:[]int64
  • 数据源格式,既支持键值对,又支持URI。书写格式遵守:PG官方规范

    • URI格式,支持pg://前缀。
    • 其中用户名、端口、主机名,在数据源中未指定时,有默认值。用户名默认为操作系统当前用户的用户名
  • 积极标记并缓存所有预备语句[包括db.Querydb.Execdb.Prepare()等的语句],遇到相同的语句请求时,自动复用。这能提高1倍的执行速度!!!

    • 为了发挥好此功能,需要最大可能地允许数据库连接空闲。
    • 配置上推荐将sql.SetMaxIdleConns(x)sql.SetMaxOpenConns(x)两处的x设置为相同的值!

协议实现

  • 此驱动更适合服务于Web
状态功能备注
<ul><li>- [x] </li></ul>启动必备,实现:无密码,明文密码和md5密码三种认证
<ul><li>- [x] </li></ul>简单查询必备
<ul><li>- [x] </li></ul>扩展查询必备
<ul><li>- [x] </li></ul>取消正在处理的请求必备
<ul><li>- [x] </li></ul>终止必备
<ul><li>- [ ] </li></ul>函数调用PG官方推荐使用查询去调用函数
<ul><li>- [ ] </li></ul>SASL 认证不常用
<ul><li>- [ ] </li></ul>异步操作不常用
<ul><li>- [ ] </li></ul>COPY操作不常用
<ul><li>- [ ] </li></ul>SSL会话加密低效
    原文作者:jf_wang
    原文地址: https://segmentfault.com/a/1190000018449077
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞