分类 GOLANG 下的文章

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)