GO SQL MySQL driver解读
GO标准库中的database/sql搭配社区开源的mysql驱动go-sql-driver/mysql,是我们常用的组合。
标准库实现了什么
Package sql provides a generic interface around SQL (or SQL-like) databases.
抽象了统一的连接、读写、事务等操作,负责调用实际的driver与特定的数据库交互(比如MySQL、SQLlite、Oracle等)
database/sql库维护了数据库连接池,它并发安全,可供多个协程并发调用。
driver实现了什么
与具体的数据库的交互过程
怎么用
用户代码直接调用标准库,同时指明使用哪个driver,使用之前要先注册driver
import (
"database/sql"
"time"
_ "github.com/go-sql-driver/mysql"
)
// ...
db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
panic(err)
}
// See "Important settings" section.
db.SetConnMaxLifetime(time.Minute * 3)
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)