(九)Beego模型之資料庫設定
阿新 • • 發佈:2022-05-10
本章介紹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