1 概述
Go 语言程序可以作为 MySQL 服务器的客户端完成 MySQL 数据库的操作。
Go 语言中,使用 database/sql 包实现类 SQL 数据库的操作。sql 包是一个数据库抽象层,具体的数据库操作的实现要依赖于相应的驱动才可以。抽象层与驱动的关系,如下图所示:
2 MySQL 驱动安装
MySQL 的驱动由 github.com/go-sql-driver/mysql 实现,使用前保证该驱动正确安装。下面的命令会将 mysql 驱动包安装到环境变量 GOPATH 命令中:
$ go get -u github.com/go-sql-driver/mysql
2 打开数据库
函数 func sql.Open(driverName, dataSourceName string) (*DB, error) 用于打开一个 dirverName 指定的数据库。打开数据库时,需要指定 dataSourceName 数据源名称,数据源名称中包含所需要连接的数据库服务器信息。一个典型的打开 mysql 驱动的数据库语法为:
db, err := sql.Open("mysql", "root:hellokang@tcp(localhost:3306)/test")
驱动的名称就是: mysql,数据源名称就是:root:hellokang@tcp(localhost:3306)/test。
打开数据库后,会获得 sql.DB 类型对象,该对象引用了一个数据库连接池,可以安全的被多个 Go 进程同时使用。同时会维护自身的闲置连接池,因此,通常情况 Open 函数只需调用一次,并很少需要关闭。若需要显式关闭使用函数 func (db *DB) Close() error 完成。
打开数据库并不是建立连接。指的是 Open 函数可能只是验证其参数,而不创建与数据库的连接。可以调用 func (db *DB) Ping() error 方法来检查数据源的名称的合法性。
3 数据源名称
数据源名称:DSN,data Source Name
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]<