1. 程式人生 > 其它 >(九)Beego模型之資料庫設定

(九)Beego模型之資料庫設定

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