主要观点:作者在 Go 栈中使用 sqlc 已近三年,有人询问是否仍认为这是正确方向,作者进行了回顾。
关键信息:
- 使用 sqlc 处理 app 中的所有数据库调用,有 101 个文件约 700 个查询,7800 行 SQL 和 34000 行生成的 Go 代码。
- 生成代码速度快,在普通 MacBook Air 上不到 1 秒。
- sqlc 的弱点是缺乏将动态代码放入查询的机制,导致列表端点和更新查询的代码较复杂,但大多数查询较好维护,且使用原生 SQL 有优势,能表达复杂查询且更不易出错。
重要细节: - 展示了不同文件中各种查询的代码示例,如
DiscountItemGetByInvoiceID
等。 - 展示了
SavedQueryGetPage
和ClusterUpdate
等复杂查询的代码。 - 作者认为即使有近 8000 行 SQL,sqlc 的工具仍快速,日常使用体验出色,若使用其他方式可能已陷入不可持续的境地。
总体而言,作者对“sqlc 是否是正确选择”的答案是肯定的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。