Hi. I created this library: https://github.com/georgysavva/scany.
It allows developers to scan complex data from a database into Go structs and other composite types with just one function call and don’t bother with rows iteration.
scany isn’t limited to any specific database. It integrates with database/sql
, so any database with database/sql driver is supported. It also works with pgx library native interface. Apart from the out of the box support, scany can be easily extended to work with almost any database library.
Here is how to use it:
package main
import (
"context"
"database/sql"
"github.com/georgysavva/scany/sqlscan"
)
type User struct {
ID string
Name string
Email string
Age int
}
func main() {
ctx := context.Background()
db, _ := sql.Open("postgres", "example-connection-url")
var users []*User
sqlscan.Select(ctx, db, &users, `SELECT id, name, email, age FROM users`)
// users variable now contains data from all rows.
}
The library is feature-rich, well documented and tested.