sqlc (sqlc-dev/sqlc)
Searching Database…
这是什么?
sqlc 是一个 SQL 编译器:你用普通的 SQL 写好查询语句,它会生成类型安全的代码,里面带有调用这些查询的接口,供你的应用程序使用。
这和用 ORM 有什么不同?
你继续写真正的 SQL——sqlc 会把这些查询编译成应用程序可以调用的类型安全代码,而不用你手工维护数据表和对象之间的映射。
我怎么上手?
先安装 sqlc 可执行文件,把查询语句写成 SQL 文件,运行 sqlc 生成代码,然后在你的应用程序里调用这些生成的函数。
它能为哪些语言生成代码?
通过官方的 sqlc-gen 插件可以生成 Go、Kotlin、Python 和 TypeScript 的代码,还可以通过插件系统支持更多语言。
它能在 Windows、macOS 和 Linux 上运行吗?
可以——sqlc 是一个单一的 Go 工具,通过它的 Downloads 页面分发,而 Go 本身就能原生构建出 Windows、macOS 和 Linux 版本。
为什么要把 SQL 编译成代码,而不是直接用 ORM?
README 里链接了一篇介绍性的博客文章讲这个动机;思路是让你的 SQL 始终作为唯一的事实来源,而调用它的代码则是自动生成且类型安全的。
sqlc 可以免费使用吗?
可以——它是采用 MIT 许可证的开源项目,开发工作由 GitHub Sponsors 赞助支持。
sqlc 在运行时会碰我的数据库吗?
不会——它是一个构建期的工具:你运行它来生成代码,到了运行时,你的应用程序只是像调用项目里的其他代码一样调用这些生成的函数。
Which topics is it in?
orm, code-generation, compiler, kotlin, mysql, sql, sqlite, postgresql, database, go, tool, typescript


