1.链接数据库
最后更新于:2022-04-02 04:54:30
beego ORM 使用
已支持数据库驱动:
~~~
MySQL:github.com/go-sql-driver/mysql
PostgreSQL:github.com/lib/pq
Sqlite3:github.com/mattn/go-sqlite3
~~~
安装 ORM:
~~~
go get github.com/astaxie/beego/orm
~~~
链接数据库
~~~
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 链接数据库
err := orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
// orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8")
// 参数1 数据库的别名,用来在 ORM 中切换数据库使用
// 参数2 mysql
// 参数3 对应的链接字符串 "账号:密码@tcp(ip:端口)/数据库"
if err != nil {
fmt.Println("connect mysql err : ", err)
} else {
fmt.Println("connect mysql success")
}
}
~~~
ORM 使用 golang 自己的连接池
~~~
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 链接数据库连接池
maxIdle := 30
maxConn := 30
err := orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8", maxIdle, maxConn)
// orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8", maxIdle, maxConn)
// 参数1 数据库的别名,用来在 ORM 中切换数据库使用
// 参数2 mysql
// 参数3 对应的链接字符串 "账号:密码@tcp(ip:端口)/数据库"
// 参数4(可选) 设置最大空闲连接
// 参数5(可选) 设置最大数据库连接 (go >= 1.2)
if err != nil {
fmt.Println("connect mysql err : ", err)
} else {
fmt.Println("connect mysql success")
}
}
~~~
根据数据库的别名,设置数据库的最大空闲连接
orm.SetMaxIdleConns("default", 30)
根据数据库的别名,设置数据库的最大数据库连接 (go >= 1.2)
orm.SetMaxOpenConns("default", 30)
时区设置
ORM 默认使用 time.Local 本地时区
作用于 ORM 自动创建的时间
从数据库中取回的时间转换成 ORM 本地时间
如果需要的话,你也可以进行更改
// 设置为 UTC 时间
orm.DefaultTimeLoc = time.UTC
ORM 在进行 RegisterDataBase 的同时,会获取数据库使用的时区,然后在 time.Time 类型存取时做相应转换,以匹配时间系统,从而保证时间不会出错。
Using 切换为其他数据库
~~~
orm.RegisterDataBase("db1", "mysql", "root:root@/orm_db2?charset=utf8")
orm.RegisterDataBase("db2", "sqlite3", "data.db")
o1 := orm.NewOrm()
o1.Using("db1")
o2 := orm.NewOrm()
o2.Using("db2")
// 切换为其他数据库以后
// 这个 Ormer 对象的其下的 api 调用都将使用这个数据库
默认使用 default 数据库,无需调用 Using
~~~
';