GORM V2 安装和连接 MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: GORM V2 安装和连接 MySQL

01

概念


GORM 是一个流行的 Go 语言操作数据库的 ORM。GORM 支持的数据库有 MySQL,PostgreSQL,SQlite,SQL Server。今天(2020/08/31)作者发布了 V2 版本,相比 V1 版本多了一些新特性,和我一起学习 GORM V2 吧。


02

安装


GORM V2 版本,作者更换到的新 Github 仓库。


我们可以使用 Go 工具 go get 安装:

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite


可能是因为作者刚发布 V2 版本,我使用第三方国内镜像代理安装没有成功,后来改用官方代理安装成功了。


03

连接 MySQL


我们以 MySQL 数据库为例,讲述 GORM 如何连接数据库。


GORM 连接 MySQL 有三种方式,第一种是使用 gorm.Open() 函数直接打开数据库连接来初始化 *gorm.DB;第二种是使用 gorm.Open() 函数通过使用数据库驱动的高级设置来初始化 *gorm.DB;第三种是使用 gorm.Open() 函数通过一个现有的数据库连接来初始化 *gorm.DB。


不管使用哪种方式,都必须导入两个包,数据库驱动包和 gorm 包:

"gorm.io/driver/mysql"
"gorm.io/gorm"

其中数据库驱动包,还可以使用自定义数据库驱动。如果感兴趣,可以自己研究,这里不再展开讲解。


GORM 可以使用 Go 语言标准库 sql 包的连接池。


通过代码,我们演示 GORM 连接 MySQL 的三种方式:


方式 1:

dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{});


方式 2:

db, err := gorm.Open(mysql.New(mysql.Config{
  DSN: "gorm:gorm@tcp(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local", // DSN data source name
  DefaultStringSize: 256, // string 类型字段的默认长度
  DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持
  DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
  DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
  SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
}), &gorm.Config{})


方式 3:

dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
if sqlDB == nil {
    sqlDB, _ := sql.Open("mysql", dsn)
}
gormDB, err := gorm.Open(
    mysql.New(
      mysql.Config{
        Conn: sqlDB,
      },
    ),
    &gorm.Config{
      SkipDefaultTransaction: true, // 关闭写入操作默认启用事务
      DisableAutomaticPing:   true, // 关闭自动 Ping 数据库
    },
  )

需要注意的是,方式 3 需要导入 Go 语言标准库 sql 包。


GORM V2 初始化 *gorm.DB 时调用的 gorm.Open() 函数有两个接收参数,值得一提的是第二个配置信息参数,可以在初始化时进行一些配置,比如 GORM 为了确保数据的一致性,在写操作中默认打开了事务,这样会对性能产生一定的损耗,我们可以根据实际情况,按需选择事务的开启和关闭。因为篇幅原因,如果对其他配置项也感兴趣,可以查阅文档。





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
关系型数据库 MySQL Linux
Linux下安装MySQL
Linux下安装MySQL
12 0
|
1天前
|
SQL 分布式计算 关系型数据库
Ubuntu上安装MySQL以及hive
Ubuntu上安装MySQL以及hive
13 1
|
1天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
22 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
1天前
|
关系型数据库 MySQL 数据库
mysqlTools 一分钟部署安装本mysql多个版本,解锁繁琐部署过程
mysqlTools 一分钟部署安装本mysql多个版本,解锁繁琐部署过程
126 2
|
1天前
|
Go
golang使用gorm操作mysql3,数据查询
golang使用gorm操作mysql3,数据查询
|
1天前
|
JSON 前端开发 Java
golang使用gorm操作mysql2
golang使用gorm操作mysql2
|
1天前
|
关系型数据库 MySQL Go
golang使用gorm操作mysql1
golang使用gorm操作mysql1
golang使用gorm操作mysql1
|
1天前
|
关系型数据库 MySQL 数据库
navicat过期了,直接用idea连接mysql
navicat过期了,直接用idea连接mysql
10 0
|
1天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
1天前
|
关系型数据库 MySQL Linux
本地虚拟机centos7通过docker安装主从mysql5.7.21
本地虚拟机centos7通过docker安装主从mysql5.7.21
19 0