Simple and performant DB client for PostgreSQL, MySQL, and SQLite
Bun is a SQL-first database client for Go. SQL-first means that most SQL queries can be automatically compiled to Bun expressions and Bun expressions look and feel like SQL queries.
The purpose of Bun is to allow writing queries using the good old SQL and to help scanning results into common Go types: structs, maps, slices, and scalars.
Quickstart
package main
import (
"context"
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/uptrace/bun"
"github.com/uptrace/bun/dialect/mysqldialect"
"github.com/uptrace/bun/extra/bundebug"
)
func main() {
ctx := context.Background()
// Open a MySQL 5.7+ database.
sqldb, err := sql.Open("mysql", "root:pass@/test")
if err != nil {
panic(err)
}
// Create a Bun db on top of it.
db := bun.NewDB(sqldb, mysqldialect.New())
// Print all queries to stdout.
db.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(true)))
var rnd float64
// Select a random number.
if err := db.NewSelect().ColumnExpr("rand()").Scan(ctx, &rnd); err != nil {
panic(err)
}
fmt.Println(rnd)
}
link : https://bun.uptrace.dev/