Go 在查询数据库时的选型。
一般编程语言中会有 ORM 和非 ORM 方式去访问数据库,比如 Python 中的 Django ORM 和 mysqlclient。对于这类语言,ORM 有一个好处是兼容了多种数据库。
但 Go 标准库中的 sql 模块就已经定义了一个规范,要求各种数据库的 driver 遵循。
这篇 文章 也认为 ORM 仅在简单的 CRUD 中节省了工作量,但是增加了学习 ORM 库的成本。
我倾向于用:
- 内置的
database/sql
,搭配sqlx
扩展 - jmoiron/sqlx:对 Golang 的 SQL 模块的扩展
- jackc/pgx:PG 的 driver
ORM 的话,GORM 是目前最流行的选择。