Golang初始化MySQL数据

安装依赖

主要这边还需要安装两个依赖,gormviper ,具体的可以访问他们的官网(Gorm官网地址 Viper Github地址)

初始化配置
在根目录下打开终端执行:

go mod init 项目名称 (例如: 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

创建文件

创建一个yml文件(application.yml)

#server:
#  post: 8888
datasource:driverName: mysqlhost: # 端口地址port: # 端口号database: # 数据库名称username: # 账号password: # 密码charset: utf8

在目录下创建一个common包,包下再创建一个database.go文件,内部写一个初始化数据库,建议拆分出来,这样拼接的方式有利于项目在不同环境下进行快速的更改配置。

package commonimport ("fmt"// 看清楚引入包,包的差异存在方法差异"github.com/jinzhu/gorm" "github.com/spf13/viper"
)// 用大写声明(可以全局访问)
var DB *gorm.DB// 创建数据库连接池
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 自动创建表,需要放入model层中的模型,比如 User{}db.AutoMigrate(User{})// 进行赋值 否则会空指针DB = dbreturn db
}// 获取DB的示例
func GetDB() *gorm.DB {return DB
}

main函数执行

在根目录下创建一个main文件(唯一),在这个环境我们需要做做一个初始化配置文件的操作,在main中优先加载这个config,然后才是初始化数据库,顺序不能错哈,因为数据库的连接信息在yml文件中,所以不要将顺序搞错。

package mainimport ("github.com/gin-gonic/gin"_ "github.com/go-sql-driver/mysql""github.com/spf13/viper""go-gin-vue/common""os"
)func main() {InitConfig()// 尝试连接数据库db := common.InitDB()// 延迟关闭defer db.Close()r := gin.Default()// 加载路由r = CollectRouter(r)// 监听的端口// 可以在yml中定义server端口并且使用yml文件中定义的端口// port := viper.GetString("server.port") if port != "" {panic(r.Run(":" + port))}r.Run(":9000") // 测试端口 9000 上启动服务
}// 初始化config文件
func InitConfig() {workDir, _ := os.Getwd()// 读取的文件名viper.SetConfigName("application")// 读取的文件类型viper.SetConfigType("yml")// 读取的路径viper.AddConfigPath(workDir + "/config")err := viper.ReadInConfig()if err != nil {panic("")}
}

golang初始化数据库(MySQL)相关推荐

  1. 如何在Mysql的Docker容器启动时初始化数据库

    1.前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. ...

  2. endnote初始化数据库支持_服务端编程——数据库(MySQL、sequelize) - 天生笑点低你奈我何...

    一.数据库 前端发送api请求的流程 通过API发送请求,到model进行业务处理,将数据存到或在MYSQL查询,将数据一并给KOA服务器请求,最后将请求的结果返回给客户端 关系型数据库.非关系型数据 ...

  3. docker mysql数据库初始化_如何在Mysql的Docker容器启动时初始化数据库

    1.前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. ...

  4. go语言服务器连接mysql,golang中连接mysql数据库

    golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...

  5. mysql 初始化数据库报错

    mysql 初始化数据库报错 bin/mysqld \ > --initialize-insecure \     2018-07-09T09:01:33.092169Z 0 [Warning] ...

  6. mysql初始数据库出错_安装MySQL提示initialize database(初始化数据库)错误解决方法...

    1.若原来电脑上安装过MySQL,需要将原来安装的软件彻底卸载干净再进行安装 (1)首先停止原MySQL服务 我的电脑--右击--管理--进入服务--找到MySQL--关闭此服务 (2)进入卸载程序控 ...

  7. Centos /Linux环境下利用Docker 安装mysql5.7镜像(含离线安装),启动mysql镜像并初始化数据库

    Docker 安装mysql镜像,含离线 Docker 安装mysql镜像(含离线) 准备mysql的Docker镜像(需要在有网的服务器中下载) 将准备好tar导入到docker镜像 Docker启 ...

  8. 创建一个含有初始化数据库的mysql docker镜像

    创建一个含有初始化数据库的mysql docker镜像 一.准备一个用于数据库初始化的.sql文件 二.编写Dockerfile文件 三.编译Dockerfile文件 1.在Dockerfile所在目 ...

  9. Golang中备份MYSQL数据库

    请注明出处:https://blog.csdn.net/qq_23179075/article/details/83306104 Golang中备份MYSQL数据库 package mainimpor ...

最新文章

  1. 计算机二级vlookup引用怎么操作,VLOOKUP函数怎样引用二个条件
  2. 零基础学习Java培训有什么攻略
  3. 浅谈Web中前后端模板引擎的使用
  4. ExtJS grid简单应用之 展示JSON数据
  5. 30分钟3300%性能提升—python+memcached网页优化小记
  6. Phython 3 笔记2 —— 基础语法
  7. Win10 虚拟机安装 Windows xp(professional sp3)简记(非教学)
  8. Zigbee无线模块配置
  9. 织梦dedecms响应式抖音培训课程新闻资讯类网站模板(自适应手机移动端)
  10. openJudge 特殊密码锁 ACM
  11. notepad++下载安装步骤
  12. 为什么打印还要另存为_打印的时候为什么显示文件另存为
  13. fater-rcnn绘制loss图
  14. database changed是什么意思_itunes其他是什么 itunes其他清除方法介绍【图文教程】...
  15. 基于ENVI下的土地利用信息提取(二)
  16. 牛客网:乘积为正数的最长连续子数组
  17. C++贪心——纪念品分组
  18. echarts 中国地图自动播放
  19. poj 3422 Kaka's Matrix Travels 费用流
  20. WPF 给文本框TextBlock以及密码框PassWord加背景水印实现用户登录提示

热门文章

  1. Book Excerpt: Succeeding with Agile: Software Development Using Scrum
  2. 计算机管理usb出现问号,usb里有个问号
  3. 百度的客户端产品是如何完成手工测试提效的?
  4. JavaScript漂浮广告效果
  5. 永磁同步电机(PMSM)磁场定向控制(FOC)电流环PI调节器参数整定
  6. 4g+uim卡是什么卡_为什么电信4G信号满格网速却很慢?
  7. SQL—分组数据(GOUP BY)
  8. 基于Arduino的公交车报站器
  9. 合理使用计算机教学反思,语文信息技术教学反思
  10. PPTP连接时常见拨号错误提示原因及解决办法