返回

一篇文章让你彻底理解 sqlc 和 golang-migrate 的使用记录

后端







在实际开发中,我们需要经常与数据库打交道,其中一个很重要的任务就是编写 SQL 语句。SQL 语句可以用来创建表、插入数据、更新数据、删除数据等。但是,SQL 语句往往很长,而且容易出错,这给开发人员带来了很大的负担。

为了解决这个问题,人们开发出了很多 ORM(Object-Relational Mapping)框架。ORM 框架可以将对象映射到关系型数据库,这样就可以用对象的方式来操作数据库,从而简化了数据库操作的复杂性。

sqlc 是一个非常流行的 ORM 框架,它可以将 SQL 语句转换为 Go 代码。这使得我们可以像操作 Go 对象一样来操作数据库,从而大大提高了开发效率。

golang-migrate 是一个数据库迁移工具,它可以帮助我们管理数据库的版本。当我们修改了数据库的结构时,我们可以使用 golang-migrate 来生成一个迁移脚本,然后执行这个脚本就可以将数据库的结构更新到最新版本。

我最近在使用 sqlc 和 golang-migrate 来开发一个项目,在这篇文章中,我将分享一下我的使用经验。

## sqlc 的安装和配置

sqlc 的安装非常简单,只需要执行以下命令即可:

```shell
go install github.com/kyleconroy/sqlc/cmd/sqlc

安装完成后,我们需要配置 sqlc。在项目根目录下创建一个名为 sqlc.json 的文件,并在其中写入以下内容:

{
  "database_url": "user:password@tcp(127.0.0.1:3306)/database_name",
  "scan_paths": [
    "internal/sql"
  ],
  "target": "internal/sql/generated",
  "experimental_cgo_scan": true
}

其中,database_url 是数据库的连接字符串,scan_paths 是需要扫描的目录,target 是生成代码的目录,experimental_cgo_scan 是是否启用 CGO 扫描。

golang-migrate 的安装和配置

golang-migrate 的安装也非常简单,只需要执行以下命令即可:

go install github.com/golang-migrate/migrate/v4/cmd/migrate

安装完成后,我们需要配置 golang-migrate。在项目根目录下创建一个名为 migrate.cfg 的文件,并在其中写入以下内容:

[database]
drivername = "mysql"
username = "root"
password = ""
hostname = "localhost"
port = 3306
dbname = "database_name"
[migrations]
directory = "migrations"

其中,[database] 部分是数据库的配置,[migrations] 部分是迁移脚本的配置。

使用 sqlc 和 golang-migrate

现在,我们可以开始使用 sqlc 和 golang-migrate 了。

首先,我们需要编写 SQL 语句。我们可以将 SQL 语句放在 internal/sql 目录下的文件中。

然后,我们需要运行 sqlc 命令来生成 Go 代码。

sqlc generate

sqlc 会自动将 SQL 语句转换为 Go 代码,并将生成的代码放在 internal/sql/generated 目录下。

接下来,我们需要编写迁移脚本。我们可以将迁移脚本放在 migrations 目录下的文件中。

最后,我们需要运行 golang-migrate 命令来执行迁移脚本。

migrate -path=migrations up

golang-migrate 会自动执行迁移脚本,并将数据库的结构更新到最新版本。

总结

sqlc 和 golang-migrate 是两个非常有用的工具,它们可以帮助我们提高数据库开发的效率。通过使用这两个工具,我们可以像操作 Go 对象一样来操作数据库,从而大大降低了开发难度。

我希望这篇文章能够帮助你快速掌握 sqlc 和 golang-migrate 的使用技巧,从而提高你的开发效率。