当前位置: 首页 > 软件库 > 开发工具 > 编译器 >

sqlc

将 SQL 编译为类型安全的 Go
授权协议 MIT
开发语言 Google Go
所属分类 开发工具、 编译器
软件类型 开源软件
地区 不详
投 递 者 越飞翮
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

sqlc 从 SQL 生成完全类型安全的成语 Go 代码。下面是它的工作原理:

  • 你使用 SQL 编写查询。
  • 你运行 sqlc 以生成具有这些查询的类型安全接口的代码。
  • 你编写调用生成代码的应用程序代码。

sqlc 可以使用这个 SQL:

CREATE TABLE authors (
  id   BIGSERIAL PRIMARY KEY,
  name text      NOT NULL,
  bio  text
);

-- name: GetAuthor :one
SELECT * FROM authors
WHERE id = $1 LIMIT 1;

并自动生成以下 Go 代码:

package db

import (
  "context"
  "database/sql"
)

type Author struct {
  ID   int64
  Name string
  Bio  sql.NullString
}

const getAuthor = `-- name: GetAuthor :one
SELECT id, name, bio FROM authors
WHERE id = $1 LIMIT 1
`

type Queries struct {
  db *sql.DB
}

func (q *Queries) GetAuthor(ctx context.Context, id int64) (Author, error) {
  row := q.db.QueryRowContext(ctx, getAuthor, id)
  var i Author
  err := row.Scan(&i.ID, &i.Name, &i.Bio)
  return i, err
}

 sqlc 的灵感来自 PugSQL 和 HugSQL。

  • 说明 sqlc是golang数据库代码自动生成工具,支持数据库支持mysql、sqlite、PostgreSQL,可通过配置快速生成golang代码。 分享 大数据博客列表 开发记录汇总 个人java工具库 项目https://gitee.com/wangzonghui/object-tool 包含json、string、集合、excel、zip压缩、pdf、bytes、http等多种工具,欢迎使

  • Infoxmix和Oracle的嵌入式SQL/C开发对比 ESQLC和PROC的对比 本文档介绍了数据库嵌入式SQL/C语言程序ESQLC和PROC的区别 一.基本语法 1.语法字符 ESQLC中既支持…$?数据库语法,同时也支持“EXEC SQL”,…:?数据库语法PROC中只支持“EXEC SQL”,…:?数据库语法 2.数据库变量定义 ESQLC中支持3种表达方法 方法1, $int nVa

  • Symptom During execution of an import from a DB2 for Linux, Unix and Windows Version 8.1 client you may encounter the error: DB21034E The command was processed as an SQL statement because it was not a

 相关资料
  • 背景 我正在协助建立一个基于网络的界面来编程简单的AI,它玩游戏和与其他AI竞争。 系统的一个主要要求是用户提交的代码被验证在服务器上运行是安全的。也就是说,如果提交的代码访问文件系统,我们需要拒绝提交。 目前,该系统使用Java作为提交语言,并执行字节码分析,根据白名单检查提交代码使用的类。如果提交使用不允许的类,则拒绝提交。 我目前正在探索在Python中支持提交的选项,Python(使用Jy

  • 问题内容: Scala没有enumJava所具有的类型安全的。给定一组相关的常数,Scala中代表这些常数的最佳方法是什么? 问题答案: http://www.scala-lang.org/docu/files/api/scala/Enumeration.html 使用范例

  • 问题内容: 我有一个CSV导入到我们的数据库。“列”之一包含 应 为INT的数据,但某些行的数字仅落在BIGINT范围内(因为它们是来自我们合作伙伴之一的测试数据)。我们在内部存储INT,不希望更改。 我想从BIGINT安全地转换为INT。安全地说,如果发生算术溢出,则不会出现任何错误。如果转换成功,我希望我的脚本继续进行。如果失败,我希望它短路。我似乎无法弄清楚正确的语法。这就是我得到的: 我曾

  • 问题内容: 经过数小时的奋斗,我终于找到了那些令人讨厌的s的来源,我认为它们是由Hibernate产生的,它是- 映射的。 但是它们来自我的JSF视图,我从 回到我的后援豆。 我的数据仅包含一个枚举的值: 。 当我在-class中测试setter时,我真的很震惊: 更改为完美工作。 这怎么可能?这些泛型不是应该是类型安全的,还是与JSF相关的类型擦除会杀死整个类型安全的东西? 还不应该像我通过?传

  • 在这种情况下,有人能帮助理解类型安全的含义吗? 我对Javadoc-https://docs . spring . io/spring-framework/docs/3 . 1 . 4 . release/Javadoc-API/org/spring framework/context/annotation/components can . html # base packages()的理解有些不

  • 问题内容: 我正在制作一个类,以便模拟C ++中的函数指针的功能。最初,我只用s 做所有事情,但后来我有了一个想法- 为什么不使其真正通用? 问题出在这个构造函数上,该构造函数试图使用签名调用另一个构造函数: 我以为这会很好,但是我收到了以下编译器错误: 因此,我很困惑,我这样做: 现在可以编译,但是我收到以下警告: 我想问题是我不明白这意味着什么。我认为,由于从参数推断出的类型,因此有 必要 调