What’s your preferred setup to work with SQL DB (without ORM) ?

This page summarizes the projects mentioned and recommended in the original post on /r/golang

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • sqlx

    general purpose extensions to golang's database/sql

  • I basically use the db/sql package/interface, but I use sqlx for its StructScan ability that will scan straight into my db struct rather than having to scan into the individual fields.

  • sqlc

    Generate type-safe code from SQL

  • sqlc for Postgresql databases is really nice. MySQL also works but has more issues and currently they are working on SQLite support.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • sqlf

    sqlf generates parameterized SQL statements in Go, sprintf style

  • sqlf for building parameterized queries, yet to settle on a row-to-struct mapper, doing it manually for now

  • go-sqlite

    Low-level Go interface to SQLite 3

  • I like and use https://github.com/zombiezen/go-sqlite for CGo-free SQLite. It avoids some of the problems database/sql has, discussed here: https://crawshaw.io/blog/go-and-sqlite.

  • Dapper

    Dapper - a simple object mapper for .Net

  • sqlx has worked pretty well for me if you are looking for a fairly light wrapper. I wish there was an equivalent of the dapper library for C#/.NET.

  • bun

    SQL-first Golang ORM (by uptrace)

  • Though, i've would give a try to bun

  • xo

    Command line tool to generate idiomatic Go code for SQL databases supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server (by xo)

  • i use xo . Reason is i prefer designing schema first and creating golang scaffolding later. Xo takes schema and gives me basic create/update/delete operations by default and i can also generate gocode for any sql queries that i write.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • Squirrel

    Fluent SQL generation for golang

  • We have used squirrel (https://github.com/Masterminds/squirrel) for query building and sqlx as a database/sql wrapper quite extensively.

  • sqly

    Simple database/sql helper library to execute queries

  • That's what I'm trying to remove with sqly (Scully). But it's mostly a PoC at this moment.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts