GORM V2 安装和连接 MySQL

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: 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 为了确保数据的一致性,在写操作中默认打开了事务,这样会对性能产生一定的损耗,我们可以根据实际情况,按需选择事务的开启和关闭。因为篇幅原因,如果对其他配置项也感兴趣,可以查阅文档。





相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
842 4
MySQL源码编译安装
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
602 4
MySQL二进制包安装
|
4月前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
536 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
4月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
416 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
636 5
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
1828 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
4月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
1534 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
444 158
|
5月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多