beego的ORM-配置資料庫

姜家志發表於2019-02-16

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時間戳表示時間欄位,好處是整形好排序,時區的轉換也比較容易。

相關文章