sqlc 使用教程

sqlc 使用教程

sqlc项目地址:https://gitcode.com/gh_mirrors/sql/sqlc

项目介绍

sqlc 是一个开源工具,用于从 SQL 查询生成类型安全的 Go 代码。通过 sqlc,开发者可以编写 SQL 查询,然后运行 sqlc 生成类型安全的 Go 代码,从而避免手动编写繁琐的 SQL 查询代码。sqlc 支持多种数据库,包括 MySQL、PostgreSQL 和 SQLite。

项目快速启动

安装 sqlc

首先,你需要安装 sqlc。可以通过以下命令进行安装:

go install github.com/kyleconroy/sqlc/cmd/sqlc@latest

创建项目结构

创建一个新的目录并初始化 Go 模块:

mkdir myproject
cd myproject
go mod init myproject

编写 SQL 查询

在项目目录下创建一个 queries 目录,并在其中创建一个 queries.sql 文件,添加一些 SQL 查询:

-- name: GetUserByID :one
SELECT * FROM users WHERE id = $1 LIMIT 1;

-- name: ListUsers :many
SELECT * FROM users ORDER BY name;

-- name: CreateUser :exec
INSERT INTO users (name, email) VALUES ($1, $2);

配置 sqlc

在项目根目录下创建一个 sqlc.yaml 文件,配置 sqlc:

version: "1"
packages:
  - name: "db"
    path: "internal/db"
    queries: "./queries"
    schema: "./schema"

生成代码

运行 sqlc 生成 Go 代码:

sqlc generate

使用生成的代码

main.go 文件中使用生成的代码:

package main

import (
    "context"
    "database/sql"
    "fmt"
    "log"

    _ "github.com/lib/pq"
    "myproject/internal/db"
)

func main() {
    conn, err := sql.Open("postgres", "user=postgres dbname=mydb sslmode=disable")
    if err != nil {
        log.Fatal(err)
    }

    q := db.New(conn)

    user, err := q.GetUserByID(context.Background(), 1)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(user)
}

应用案例和最佳实践

应用案例

sqlc 可以用于各种需要与数据库交互的应用程序。例如,一个简单的用户管理系统可以使用 sqlc 来管理用户数据。通过 sqlc 生成的代码,可以轻松地进行 CRUD 操作,同时保证类型安全。

最佳实践

  1. 保持查询简洁:尽量编写简洁明了的 SQL 查询,避免复杂的嵌套查询。
  2. 使用命名参数:在 SQL 查询中使用命名参数,可以提高代码的可读性和可维护性。
  3. 定期更新 sqlc:保持 sqlc 工具的最新版本,以获得最新的功能和性能优化。

典型生态项目

sqlc 可以与其他 Go 生态项目结合使用,例如:

  1. GORM:虽然 sqlc 生成了类型安全的 SQL 代码,但在某些情况下,你可能需要使用 GORM 进行更高级的 ORM 操作。
  2. pgx:如果你使用 PostgreSQL,pgx 是一个高性能的 PostgreSQL 驱动程序,可以与 sqlc 结合使用。
  3. sqlmock:在单元测试中,sqlmock 可以帮助你模拟数据库交互,确保生成的代码在各种情况下都能正常工作。

通过结合这些生态项目,可以构建出更强大、更灵活的数据库交互应用程序。

sqlc项目地址:https://gitcode.com/gh_mirrors/sql/sqlc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸莹子Shelley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值