golang初始化数据库(MySQL)
Golang初始化MySQL数据
安装依赖
主要这边还需要安装两个依赖,gorm
、viper
,具体的可以访问他们的官网(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)相关推荐
- 如何在Mysql的Docker容器启动时初始化数据库
1.前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. ...
- endnote初始化数据库支持_服务端编程——数据库(MySQL、sequelize) - 天生笑点低你奈我何...
一.数据库 前端发送api请求的流程 通过API发送请求,到model进行业务处理,将数据存到或在MYSQL查询,将数据一并给KOA服务器请求,最后将请求的结果返回给客户端 关系型数据库.非关系型数据 ...
- docker mysql数据库初始化_如何在Mysql的Docker容器启动时初始化数据库
1.前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. ...
- go语言服务器连接mysql,golang中连接mysql数据库
golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...
- mysql 初始化数据库报错
mysql 初始化数据库报错 bin/mysqld \ > --initialize-insecure \ 2018-07-09T09:01:33.092169Z 0 [Warning] ...
- mysql初始数据库出错_安装MySQL提示initialize database(初始化数据库)错误解决方法...
1.若原来电脑上安装过MySQL,需要将原来安装的软件彻底卸载干净再进行安装 (1)首先停止原MySQL服务 我的电脑--右击--管理--进入服务--找到MySQL--关闭此服务 (2)进入卸载程序控 ...
- Centos /Linux环境下利用Docker 安装mysql5.7镜像(含离线安装),启动mysql镜像并初始化数据库
Docker 安装mysql镜像,含离线 Docker 安装mysql镜像(含离线) 准备mysql的Docker镜像(需要在有网的服务器中下载) 将准备好tar导入到docker镜像 Docker启 ...
- 创建一个含有初始化数据库的mysql docker镜像
创建一个含有初始化数据库的mysql docker镜像 一.准备一个用于数据库初始化的.sql文件 二.编写Dockerfile文件 三.编译Dockerfile文件 1.在Dockerfile所在目 ...
- Golang中备份MYSQL数据库
请注明出处:https://blog.csdn.net/qq_23179075/article/details/83306104 Golang中备份MYSQL数据库 package mainimpor ...
最新文章
- 计算机二级vlookup引用怎么操作,VLOOKUP函数怎样引用二个条件
- 零基础学习Java培训有什么攻略
- 浅谈Web中前后端模板引擎的使用
- ExtJS grid简单应用之 展示JSON数据
- 30分钟3300%性能提升—python+memcached网页优化小记
- Phython 3 笔记2 —— 基础语法
- Win10 虚拟机安装 Windows xp(professional sp3)简记(非教学)
- Zigbee无线模块配置
- 织梦dedecms响应式抖音培训课程新闻资讯类网站模板(自适应手机移动端)
- openJudge 特殊密码锁 ACM
- notepad++下载安装步骤
- 为什么打印还要另存为_打印的时候为什么显示文件另存为
- fater-rcnn绘制loss图
- database changed是什么意思_itunes其他是什么 itunes其他清除方法介绍【图文教程】...
- 基于ENVI下的土地利用信息提取(二)
- 牛客网:乘积为正数的最长连续子数组
- C++贪心——纪念品分组
- echarts 中国地图自动播放
- poj 3422 Kaka's Matrix Travels 费用流
- WPF 给文本框TextBlock以及密码框PassWord加背景水印实现用户登录提示
热门文章
- Book Excerpt: Succeeding with Agile: Software Development Using Scrum
- 计算机管理usb出现问号,usb里有个问号
- 百度的客户端产品是如何完成手工测试提效的?
- JavaScript漂浮广告效果
- 永磁同步电机(PMSM)磁场定向控制(FOC)电流环PI调节器参数整定
- 4g+uim卡是什么卡_为什么电信4G信号满格网速却很慢?
- SQL—分组数据(GOUP BY)
- 基于Arduino的公交车报站器
- 合理使用计算机教学反思,语文信息技术教学反思
- PPTP连接时常见拨号错误提示原因及解决办法