github.com/lib/pq
pg是一个纯Go写的Postgres数据库的driver。尼玛,作者给大家开了一个小小的玩笑,pq老是会习惯性的写成pg有没有…安装方式如下:
go get github.com/lib/pq
Register
如前所述,Driver需要调用sql.Register根据名字将driver实现的driver.Driver类型interface注册。pq driver的init函数在源码pq/conn.go文件中,init函数调用sql.Register将driver 数据结构注册到名字”postgres“下。
type drv struct{}
func (d *drv)Open(name string)(dirver.Conn, error) {
return Open(name)
}
func init() {
sql.Register("postgres", &drv{})
}
这样在代码中import ”github.com/lib/pq”时postgres将自动被注册。
下面将以一次Query操作来讲解代码流程。
Sample
首先来一段示例代码(注:代码为伪代码,仅表示流程,不能编译执行):
package main
import (
"database/sql"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "postg