本章介绍beego orm数据库连接相关设置。
一、beego支持的数据库类型
目前ORM支持三种数据库,分别是:
- mysql
- sqlite3
- Postgre
使用不同的数据库,需要导入不同的数据库驱动:
import (
// 导入mysql驱动
_ "github.com/go-sql-driver/mysql"
// 导入sqlite3驱动
_ "github.com/mattn/go-sqlite3"
// 导入Postgres驱动
_ "github.com/lib/pq"
)
根据需要导入自己想要的驱动即可。
二、mysql数据库连接
这里介绍mysql数据库的详细链接参数,要想连接mysql数据库,首先得注册一个数据库,在调用查询函数会自动创建连接。
ORM 必须注册一个别名为 default 的数据库,作为默认使用的数据库。
注册数据库的函数原型:
func RegisterDataBase(aliasName, driverName, dataSource string, params ...int) error
参数说明:
参数名 | 说明 |
aliasName | 数据库的别名,用来在 ORM 中切换数据库使用 |
driverName | 驱动名字 |
dataSource | 数据库连接字符串 |
params | 附加参数 |
例子: |
// 注册默认数据库,驱动为mysql, 第三个参数就是我们的数据库连接字符串。
orm.RegisterDataBase("default", "mysql", "root:123456@tcp(localhost:3306)/tizi?charset=utf8")
mysql数据库连接字符串DSN (Data Source Name)详解:
格式:
username:password@protocol(address)/dbname?param=value
参数说明:
参数名 | 说明 |
username | 数据库账号 |
password | 数据库密码 |
protocol | 连接协议,一般就是tcp |
address | 数据库地址,可以包含端口。例: localhost:3306 , 127.0.0.1:3306 |
dbname | 数据库名字 |
param=value | 最后面问号(?)之后可以包含多个键值对的附加参数,多个参数之间用&连接。 |
常用附加参数说明: |
参数名 | 默认值 | 说明 |
charset | none | 设置字符集,相当于 SET NAMES 语句 |
loc | UTC | 设置时区,可以设置为Local,表示根据本地时区走 |
parseTime | false | 是否需要将 mysql的 DATE 和 DATETIME 类型值转换成GO的time.Time类型。 |
readTimeout | 0 | I/O 读超时时间, sql查询超时时间. 单位 ("ms", "s", "m", "h"), 例子: "30s", "0.5m" or "1m30s". |
timeout | 0 | 连接超时时间,单位("ms", "s", "m", "h"), 例子: "30s", "0.5m" or "1m30s". |
例子:
root:123456@(123.180.11.30:3306)/tizi?charset=utf8&timeout=5s&loc=Local&parseTime=true
3.数据库连接池设置
数据库连接词参数主要有下面两个:
3.1. SetMaxIdleConns
根据数据库的别名,设置数据库的最大空闲连接
orm.SetMaxIdleConns("default", 20)
3.2. SetMaxOpenConns
根据数据库的别名,设置数据库的最大数据库连接
orm.SetMaxOpenConns("default", 100)
4.数据库调试模式
打开调试模式,当执行orm查询的时候,会打印出对应的sql语句。
orm.Debug = true