Go 提供了database/sql包用于对关系型数据库的访问。
作为操作数据库的入口对象sql.DB,主要为我们提供了两个重要的功能:
- sql.DB 通过数据库驱动为我们提供管理底层数据库连接的打开和关闭操作.
- sql.DB 为我们管理数据库连接池
需要注意的是,sql.DB表示操作数据库的抽象访问接口, 而非一个数据库连接对象;它可以根据driver打开关闭数据库连接,管理连接池。正在使用的连接被标记为繁忙,用完后回到连接池等待下次使用。所以,如果你没有把连接释放回连接池,会导致过多连接使系统资源耗尽。
具体到某一类型的关系型数据库,需要导入对应的数据库驱动。下面以MySQL8.0为例,来讲讲怎么在Go语言中调用。
首先,需要下载第三方包:go get github.com/go-sql-driver/mysql
在代码中导入MySQL数据库驱动:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
通常来说,不应该直接使用驱动所提供的方法,而是应该使用 sql.DB,因此在导入 MySQL 驱动时,这里使用了匿名导入的方式(在包路径前添加 _),当导入了一个数据库驱动后,此驱动会自行初始化并注册自己到Go的database/sql上下文中,因此我们就可以通过 database/sql 包提供的方法访问数据库了。
下一节:本文详细介绍 Go语言中如何对 MySQL 数据库进行增删改查操作。