资讯专栏INFORMATION COLUMN

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

Pluser / 1238人阅读

摘要:常见类型直接兼容的数组类型。如的,对应的数据源格式,既支持键值对,又支持。书写格式遵守官方规范。格式,支持前缀。其中用户名端口主机名,在数据源中未指定时,有默认值。这能提高倍的执行速度为了发挥好此功能,需要最大可能地允许数据库连接空闲。

用于golang database/sql 的PostgreSQL驱动



Go Version Support

PostgreSQL Version Support


安装
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

状态 功能 备注
  • - [x]
启动 必备,实现:无密码,明文密码和md5密码三种认证
  • - [x]
简单查询 必备
  • - [x]
扩展查询 必备
  • - [x]
取消正在处理的请求 必备
  • - [x]
终止 必备
  • - [ ]
函数调用 PG官方推荐使用查询去调用函数
  • - [ ]
SASL 认证 不常用
  • - [ ]
异步操作 不常用
  • - [ ]
COPY操作 不常用
  • - [ ]
SSL会话加密 低效

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39031.html

相关文章

  • PostgreSQL JSONB 使用入门

    摘要:类型说明根据中的说明,数据类型是用来存储数据的。它们几乎接受完全相同的值集合作为输入。该结构是非强制的,但是有一个可预测的结构会使集合的查询更容易。如中,表示在和这两个位置出现过,在中这些位置实际上就是元组的行号,包括数据块以及。 json 类型 说明 根据RFC 7159中的说明,JSON 数据类型是用来存储 JSON(JavaScript Object Notation)数据的。这...

    Karrdy 评论0 收藏0
  • PostgreSQL JSONB 使用入门

    摘要:类型说明根据中的说明,数据类型是用来存储数据的。它们几乎接受完全相同的值集合作为输入。该结构是非强制的,但是有一个可预测的结构会使集合的查询更容易。如中,表示在和这两个位置出现过,在中这些位置实际上就是元组的行号,包括数据块以及。 json 类型 说明 根据RFC 7159中的说明,JSON 数据类型是用来存储 JSON(JavaScript Object Notation)数据的。这...

    MageekChiu 评论0 收藏0
  • Golang数据库编程之GORM库入门

    摘要:在上一篇文章中我们讲解了使用语言的标准库包操作数据库的过程,虽然使用包操作数据也是挺方便的,但是需要自己写每一条语句,因此我们可能会自己再度进行封装,以便更好地使用,而使用现有语言开源框架则是代替自己封装的一个更好的方式。在上一篇文章中我们讲解了使用Go语言的标准库sql/database包操作数据库的过程,虽然使用sql/database包操作数据也是挺方便的,但是需要自己写每一条SQL语...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

Pluser

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<