Go语言操作MySQL数据库

本文主要介绍了Go语言如何操作MySQL数据库。

关键词:golang

连接

sql包提供了保证SQL或类SQL数据库的泛用接口。

使用sql包时必须注入(至少)一个数据库驱动。参见http://golang.org/s/sqldrivers 获取驱动列表。

更多用法示例,参见wiki页面:http://golang.org/s/sqlwiki。

这里使用github.com/go-sql-driver/mysql/作为MySQL的驱动。

下载依赖

1
go get -u github.com/go-sql-driver/mysql

初始化链接

1
func Open(driverName, dataSourceName string) (*DB, error)
  • 返回的DB类型可用被多个goroutine同时使用,只需要创建一次,很少需要关闭这个对象;

  • Open函数只验证参数格式是否正确,不创建数据库的连接,无法验证密码是否正确;

  • 一般设置成全局变量,一次初始化然后整个模块使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import (
"database/sql"
_ "https://github.com/go-sql-driver/mysql" // init mysql驱动
)
var db *sql.DB
// Data Source Name
const dsn = "root:xxx@tcp(127.0.0.1)/dbname"
func main() {
var err error
db, err = sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
defer db.Close()
}

验证用户名和密码是否正确

1
func (db *DB) Ping() error
  • 验证数据库是否可用
  • 如果必要的话建立一个连接

设置最大连接数

1
func (db *DB) SetMaxOpenConns(n int)
  • 设置数据库最大连接数
  • 如果n > 0且小于最大闲置连接数,则会将最大闲置连接数减少到匹配开启最大连接数的限制
  • 如果n <= 0(默认值),不会限制最大开启连接数限制

设置最大闲置连接数

1
func (db *DB) SetMaxIdleConns(n int)
  • 设置数据库最大闲置连接数
  • 如果n 大于最大连接数,则新的最大闲置连接数会减少到最大连接数
  • 如果n <= 0,则不会保持闲置连接,默认值为2