https://segmentfault.com/a/

Object Relational Mapping,简称ORM,用于实现面向对象编程语言里不通类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
beego是谢大神开发的一个快速开发Go应用的Http框架,一个RESTful的框架。
记录下如何在beego中配置数据库,以MySql为例

数据库选择

目前beego的ORM支持三种数据库:

1.Sqlite
2.PostgreSql
3.MySql

如果要使用其中的数据库必须要把对应的drive(go语言对于的数据库引擎)加入到import中:

import (
    _ "github.com/go-sql-driver/mysql"
    _ "github.com/lib/pq"
    _ "github.com/mattn/go-sqlite3"
)

数据库注册

orm.RegisterDriver(“mysql”, orm.DRMySQL)

这句话的意思是注册了mysql的数据库,当然我们要import进来对于的ORM包:

import(
    "github.com/astaxie/beego/orm"
)

第一个参数是driverName,第二个参数是orm的类型对于三种数据库:

orm.DRMySQL
orm.DRSqlite
orm.DRPostgres

数据库连接

beego必须注册一个别名为default的数据库,作为默认使用。

orm.RegisterDataBase(“default”, “mysql”, “test:123456@/test?charset=utf8”,30,30)

第一个参数是数据库的别名,用来切换数据库使用。
第二个是driverName,在RegisterDriver时注册的
第三是数据库连接字符串:test:123456@/test?charset=utf8相对于用户名:密码@数据库地址+名称?字符集
第四个参数相当于:

orm.SetMaxIdleConns(“default”, 30)

设置数据库的最大空闲连接。
第五个参数相当于:

orm.SetMaxOpenConns(“default”, 30)

设置数据库的最大数据库连接。

第四个参数和第五个参数也可以不传值,会使用数据库默认值:

时区

曾经我遇到过一个项目,数据库的时区设置的ORM的时区不一致,导致后面的开发会复杂很多。beego中会使用DefaultTimeLoc来保证时间不会出错
beego默认使用time.Local本地时区,可以用来自动创建时间,从数据中取出时间转换。

orm.DefaultTimeLoc = time.UTC

可以设置默认的时区。
在进行RegisterDataBase的时候,会获取数据库使用的时区,做响应的转换,匹配时间,从而保证时间不会出错。
在使用的过程中可以考虑使用unix时间戳表示时间字段,好处是整形好排序,时区的转换也比较容易。