Skip to content

Go 中使用 gorm 适配自定义数据库驱动

约 1245 字大约 4 分钟

Go

2024-02-28

GORM 官方支持的数据库类型有:MySQL,PostgreSQL,SQLite,SQL Server 和 TiD。但是我们有的时候需要使用 gorm 接入一些其他自定义的数据库,例如:Oracle 或者 Yashan

在本文中,我们将介绍如何在 Go 中使用 gorm 这个流行的 ORM 框架来连接 Yashan 数据库,并进行一些基本的增删改查操作。事实上这个方法适用于任何一个你想适配的数据库,如果其官方未适配 gorm 的话。

前提环境

在开始之前,我们需要准备以下内容:

  • 一台安装了 Yashan 数据库的服务器,以及一个可以访问的数据库用户和密码。在本文中,我们假设服务器的 IP 地址是 192.168.1.100,端口号是 1688,数据库名是 yasdb,用户名是 sys,密码是 123456
  • 一台安装了 Go 的开发环境,以及设置好了 GOPATHGOROOT 环境变量。在本文中,我们假设 Go 的版本是 1.20,并且使用了 go mod 来管理依赖包。
  • 一个可以编写和运行 Go 代码的编辑器或 IDE。

安装 gorm 和驱动

要使用 gorm 来链接 Yashan 数据库,我们需要安装 gorm 本身,以及一个适用于 Yashan 的驱动。由于当前 Yashan 官网上未给出 Go 语言的相关驱动,我们使用官网提供的 C 驱动然后利用 go 调用 C 实现。

go get -u gorm.io/gorm

执行上述命令后,我们在 Go 项目中成功安装了 gorm。

连接数据库

首先我们来看一下 gorm 内部支持的数据库是如何连接的。

main.go
pacakge main

import (
  "gorm.io/driver/postgres"
  "gorm.io/gorm"
)

dsn := "host=localhost user=gorm password=gorm dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})

gorm 官方文档-Open 中可以看到,func Open 接受一个 Dialector 对象。而我们现在需要做的就是根据 Yashan 数据库的 C 驱动,实现 Dialector 对象相关的所有接口即可。

dialect.go

现在,我们即可以使用以下代码进行数据库的连接了。

main.go




贡献者

更新日志

2025/2/24 09:08
查看所有更新日志
  • 1ca4c-improve(docs): use chinese punctuation
  • 1289a-improve(docs): delete extra whitespace and blank lines
  • 42fb8-fix(docs): text typo
  • c2111-modify(docs): remanage folders and rename files
  • 96e66-docs: update docs
  • e33f4-整理tag
  • 7b24f-整理文章代码格式
  • 978a9-整理文章格式
  • f86ee-update
  • 93933-新增文字+CRLF全部替换为LF

Keep It Simple