一篇文章让你彻底理解 sqlc 和 golang-migrate 的使用记录
2024-02-02 21:09:54
在实际开发中,我们需要经常与数据库打交道,其中一个很重要的任务就是编写 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 的使用技巧,从而提高你的开发效率。