欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang初始化MySQL數(shù)據(jù)庫方法淺析

 更新時間:2023年05月19日 09:26:37   作者:三杯溫開水  
這篇文章主要介紹了Golang初始化MySQL數(shù)據(jù)庫的方法,數(shù)據(jù)庫的建立第一步即要初始化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

安裝依賴

主要這邊還需要安裝兩個依賴,gorm、viper ,具體的可以訪問他們的官網(wǎng)(Gorm官網(wǎng)地址 Viper Github地址)

初始化配置

在根目錄下打開終端執(zhí)行:

go mod init 項(xiàng)目名稱 (例如: go mod init demo )

安裝依賴

go get github.com/jinzhu/gorm 或 go get -u gorm.io/gorm

go get -u gorm.io/driver/mysql

go get github.com/spf13/viper

創(chuàng)建文件

創(chuàng)建一個yml文件(application.yml)

#server:
#  post: 8888
datasource:
  driverName: mysql
  host: # 端口地址
  port: # 端口號
  database: # 數(shù)據(jù)庫名稱
  username: # 賬號
  password: # 密碼
  charset: utf8

在目錄下創(chuàng)建一個common包,包下再創(chuàng)建一個database.go文件,內(nèi)部寫一個初始化數(shù)據(jù)庫,建議拆分出來,這樣拼接的方式有利于項(xiàng)目在不同環(huán)境下進(jìn)行快速的更改配置。

package common
import (
	"fmt"
	// 看清楚引入包,包的差異存在方法差異
	"github.com/jinzhu/gorm" 
	"github.com/spf13/viper"
)
// 用大寫聲明(可以全局訪問)
var DB *gorm.DB
// 創(chuàng)建數(shù)據(jù)庫連接池
func InitDB() *gorm.DB {
	driverName := viper.GetString("datasource.driverName")
	host := viper.GetString("datasource.host")
	port := viper.GetString("datasource.port")
	database := viper.GetString("datasource.database")
	username := viper.GetString("datasource.username")
	password := viper.GetString("datasource.password")
	charset := viper.GetString("datasource.charset")
	args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
		username,
		password,
		host,
		port,
		database,
		charset)
	db, err := gorm.Open(driverName, args)
	if err != nil {
		fmt.Println("fail err mysql", err.Error())
	}
	// gorm 自動創(chuàng)建表,需要放入model層中的模型,比如 User{}
	db.AutoMigrate(User{})
	// 進(jìn)行賦值 否則會空指針
	DB = db
	return db
}
// 獲取DB的示例
func GetDB() *gorm.DB {
	return DB
}

main函數(shù)執(zhí)行

在根目錄下創(chuàng)建一個main文件(唯一),在這個環(huán)境我們需要做做一個初始化配置文件的操作,在main中優(yōu)先加載這個config,然后才是初始化數(shù)據(jù)庫,順序不能錯哈,因?yàn)閿?shù)據(jù)庫的連接信息在yml文件中,所以不要將順序搞錯。

package main
import (
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
	"github.com/spf13/viper"
	"go-gin-vue/common"
	"os"
)
func main() {
	InitConfig()
	// 嘗試連接數(shù)據(jù)庫
	db := common.InitDB()
	// 延遲關(guān)閉
	defer db.Close()
	r := gin.Default()
	// 加載路由
	r = CollectRouter(r)
	// 監(jiān)聽的端口
	// 可以在yml中定義server端口并且使用yml文件中定義的端口
	// port := viper.GetString("server.port") 
	if port != "" {
		panic(r.Run(":" + port))
	}
	r.Run(":9000") // 測試端口 9000 上啟動服務(wù)
}
// 初始化config文件
func InitConfig() {
	workDir, _ := os.Getwd()
	// 讀取的文件名
	viper.SetConfigName("application")
	// 讀取的文件類型
	viper.SetConfigType("yml")
	// 讀取的路徑
	viper.AddConfigPath(workDir + "/config")
	err := viper.ReadInConfig()
	if err != nil {
		panic("")
	}
}

到此這篇關(guān)于Golang初始化數(shù)據(jù)庫方法淺析的文章就介紹到這了,更多相關(guān)Go初始化數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang迭代如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解

    Golang迭代如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解

    這篇文章主要為大家介紹了Golang迭代之如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 淺析Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作

    淺析Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作

    這篇文章主要為大家詳細(xì)介紹了Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作,文中的示例代碼講解詳細(xì),對我們深入了解Go語言有一定的幫助,需要的可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Golang 類型轉(zhuǎn)換的實(shí)現(xiàn)(斷言、強(qiáng)制、顯式類型)

    Golang 類型轉(zhuǎn)換的實(shí)現(xiàn)(斷言、強(qiáng)制、顯式類型)

    將一個值從一種類型轉(zhuǎn)換到另一種類型,便發(fā)生了類型轉(zhuǎn)換,在go可以分為斷言、強(qiáng)制、顯式類型轉(zhuǎn)換,本文就詳細(xì)的介紹一下這就幾種轉(zhuǎn)換方式,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Golang中常見的三種并發(fā)控制方式使用小結(jié)

    Golang中常見的三種并發(fā)控制方式使用小結(jié)

    這篇文章主要為大家詳細(xì)介紹了如何對goroutine并發(fā)行為的控制,在Go中最常見的有三種方式:sync.WaitGroup、channel和Context,下面我們就來看看他們的具體使用吧
    2024-01-01
  • Go語言中排序的3種實(shí)現(xiàn)方法

    Go語言中排序的3種實(shí)現(xiàn)方法

    在寫代碼過程中,排序是經(jīng)常會遇到的需求,這篇文章主要為大家介紹三種常用的方法,文中的示例代碼簡潔易懂,需要的小伙伴可以參考下
    2023-08-08
  • Golang性能優(yōu)化的技巧分享

    Golang性能優(yōu)化的技巧分享

    性能優(yōu)化的前提是滿足正確可靠、簡潔清晰等質(zhì)量因素,針對?Go語言特性,本文為大家整理了一些Go語言相關(guān)的性能優(yōu)化建議,感興趣的可以了解一下
    2023-07-07
  • Go語言操作Excel利器之excelize類庫詳解

    Go語言操作Excel利器之excelize類庫詳解

    Excelize是Go語言編寫的用于操作Office Excel文檔基礎(chǔ)庫,基于ECMA-376,ISO/IEC 29500國際標(biāo)準(zhǔn),可以使用它來讀取、寫入由Excel 2007及以上版本創(chuàng)建的電子表格文檔,下面這篇文章主要給大家介紹了關(guān)于Go語言操作Excel利器之excelize類庫的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • go語言中函數(shù)與方法介紹

    go語言中函數(shù)與方法介紹

    這篇文章介紹了go語言中的函數(shù)與方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 使用go gin來操作cookie的講解

    使用go gin來操作cookie的講解

    今天小編就為大家分享一篇關(guān)于使用go gin來操作cookie的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Golang 經(jīng)典校驗(yàn)庫 validator 用法解析

    Golang 經(jīng)典校驗(yàn)庫 validator 用法解析

    這篇文章主要為大家介紹了Golang 經(jīng)典校驗(yàn)庫 validator 用法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評論