老男孩教育-Go语言操作MySQL(一)
老男孩IT教育
技术博客
2021年3月25日 15:58
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
Go语言MySQL包
使用第三方开源的mysql库:
github.com/go-sql-driver/mysql (MySQL驱动)
github.com/jmoiron/sqlx (基于MySQL驱动的封装)
通过如下命令,保存下载第三方库:
go get github.com/go-sql-driver/mysql
go get github.com/jmoiron/sqlx
创建数据库、数据表
在MySQL下创建 oldboy库:
mysql> CREATE DATABASE IF NOT EXISTS oldboy DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
在oldboy库中创建student表。
mysql> use oldboy;
mysql> CREATE TABLE IF NOT EXISTS `student`(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`sex` varchar(40) NOT NULL,
`age` int(11) DEFAULT NULL,
`course` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL连接池
数据库连接使用datebase/sql Open函数进行连接,用户应该通过db.Ping()函数来检查数据库是否实际可用。
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
func main() {
//DB, err := sqlx.Open("数据库类型", "用户名:密码@tcp(地址:端口)/数据库名")
DB, err := sqlx.Open("mysql", "root:root@tcp(127.0.0.1:3306)/oldboy")
if err != nil {
fmt.Println("Open mysql failed,", err)
}
err = DB.Ping()
if err != nil {
fmt.Println("Ping mysql failed,", err)
} else {
fmt.Println("MySQL client success")
}
}
连接池配置
配置连接池有两个的函数:
设置最大数据库连接:使用 db.SetMaxOpenConns(n int) 函数设置打开数据库的最大连接数。包含正在使用的连接和连接池的连接。如果你的函数调用需要申请一个连接,并且连接池已经没有了连接或者连接数达到了最大连接数。此时的函数调用将会被block,直到有可用的连接才会返回。设置这个值可以避免并发太高导致连接mysql出现too many connections的错误。该函数的默认设置是0,表示无限制。
设置最大空闲连接:使用db.SetMaxIdleConns(n int) 函数设置连接池中的保持连接的最大连接数。默认也是0,表示连接池不会保持释放会连接池中的连接的连接状态:即当连接释放回到连接池的时候,连接将会被关闭。这会导致连接再连接池中频繁的关闭和创建。
老男孩教育专注Linux云计算运维工程师、Python全栈+人工智能、Python自动化运维开发、网络安全、数据分析、新媒体运营、MySQLDBA开发、K8S微服务、Go语言等互联网课程培训。欢迎对it行业感兴趣的朋友们来公司考察及学习。
推荐阅读: