本章介绍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