<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > ORM框架操作數據庫都需要預先定義模型 [TOC] ## 連接mysql數據庫 > DSN格式: > `[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]` ~~~ package main import ( "fmt" _ "github.com/jinzhu/gorm/dialects/mysql" "github.com/jinzhu/gorm" ) func main() { //配置MySQL連接參數 username := "root" //賬號 password := "123456" //密碼 host := "127.0.0.1" //數據庫地址,可以是Ip或者域名 port := 3306 //數據庫端口 Dbname := "tizi365" //數據庫名 timeout := "10s" //連接超時,10秒 //拼接下dsn參數, dsn格式可以參考上面的語法,這里使用Sprintf動態拼接dsn參數,因為一般數據庫連接參數,我們都是保存在配置文件里面,需要從配置文件加載參數,然后拼接dsn。 dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout) //連接MYSQL, 獲得DB類型實例,用于后面的數據庫讀寫操作。 db, err := gorm.Open("mysql", dsn) if err != nil { panic("連接數據庫失敗, error=" + err.Error()) } //延時關閉數據庫連接 defer db.Close() } ~~~ ## 開啟調試模式 > 開發階段為了方便調試,可以將調試模式打開 ~~~ db.LogMode(true) ~~~ ## gorm連接池 > 在高并發實踐中為了提高性能,往往會使用到數據庫的連接池 **定義utils包,負責數據庫初始化工作** ~~~ package utils import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) //定義全局的db對象,我們執行數據庫操作主要通過他實現。 var _db *gorm.DB //包初始化函數,golang特性,每個包初始化的時候會自動執行init函數,這里用來初始化gorm。 func init() { //配置MySQL連接參數 username := "gintest" //賬號 password := "gin123456" //密碼 host := "127.0.0.1" //數據庫地址,可以是Ip或者域名 port := 3306 //數據庫端口 Dbname := "gintest" //數據庫名 timeout := "10s" //連接超時,10秒 //拼接下dsn參數, dsn格式可以參考上面的語法,這里使用Sprintf動態拼接dsn參數,因為一般數據庫連接參數,我們都是保存在配置文件里面,需要從配置文件加載參數,然后拼接dsn。 dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout) // 聲明err變量,下面不能使用:=賦值運算符,否則_db變量會當成局部變量,導致外部無法訪問_db變量 var err error //連接MYSQL, 獲得DB類型實例,用于后面的數據庫讀寫操作。 _db, err = gorm.Open("mysql", dsn) if err != nil { panic("連接數據庫失敗, error=" + err.Error()) } //設置數據庫連接池參數 _db.DB().SetMaxOpenConns(100) //設置數據庫連接池最大連接數 _db.DB().SetMaxIdleConns(20) //連接池最大允許的空閑連接數,如果沒有sql任務需要執行的連接數大于20,超過的連接會被連接池關閉。 } //獲取gorm db對象,其他包需要執行數據庫查詢的時候,只要通過tools.getDB()獲取db對象即可。 //不用擔心協程并發使用同樣的db對象會共用同一個連接,db對象在調用他的方法的時候會從數據庫連接池中獲取新的連接 func GetDB() *gorm.DB { return _db } ~~~ **使用例子** ~~~ package main import ( "fmt" "gintest/models" "gintest/utils" ) func main() { //獲取DB db := utils.GetDB() //執行數據庫插入操作 u := models.User{Username: "wk123", Password: "123456", CreateTime: 1112222} if err := db.Create(u).Error; err != nil { fmt.Println("insert failed") } fmt.Println(u.Username, u.Password) } ~~~ > 注意:使用連接池技術后,千萬不要使用完db后調用db.Close關閉數據庫連接,這樣會導致整個數據庫連接池關閉,導致連接池沒有可用的連接。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看