slicebit/qb has 508 GitHub stars and 26 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 13:58 UTC. Last push 2023-11-23.
The database toolkit for go
What you can do
- Support for postgres(9.5.+), mysql & sqlite3
- Powerful expression API for building queries & table ddls
- Struct to table ddl mapper where initial table migrations can happen
- Transactional session api that auto map structs to queries
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
qb - the database toolkit for go
This project is currently pre 1.
Currently, it's not feature complete. It can have potential bugs. There are no tests covering concurrency race conditions. It can crash especially in concurrency. Before 1.x releases, each major release could break backwards compatibility.
About qb
qb is a database toolkit for easier db queries in go. It is inspired from python's best orm, namely sqlalchemy. qb is an orm(sqlx) as well as a query builder. It is quite modular in case of using just expression api and query building stuff.
Documentation
The documentation is hosted in readme.io which has great support for markdown docs. Currently, the docs are about 80% - 90% complete. The doc files will be added to this repo soon. Moreover, you can check the godoc from here. Contributions & Feedbacks in docs are welcome.
Features
- Support for postgres(9.5.+), mysql & sqlite3
- Powerful expression API for building queries & table ddls
- Struct to table ddl mapper where initial table migrations can happen
- Transactional session api that auto map structs to queries
- Foreign key definitions
- Single & Composite column indices
- Relationships (soon.. probably in 0.3 milestone)
Installation
go get -u github.com/slicebit/qb
If you want to install test dependencies then;
go get -u -t github.com/slicebit/qb
Quick Start
package main
import (
"fmt"
"github.com/slicebit/qb"
_ "github.com/mattn/go-sqlite3"
_ "github.com/slicebit/qb/dialects/sqlite"
)
type User struct {
ID string `db:"id"`
Email string `db:"email"`
FullName string `db:"full_name"`
Oscars int `db:"oscars"`
}
func main() {
users := qb.Table(
"users",
qb.Column("id", qb.Varchar().Size(40)),
qb.Column("email", qb.Varchar()).NotNull().Unique(),
qb.Column("full_name", qb.Varchar()).NotNull(),
qb.Column("oscars", qb.Int()).NotNull().Default(0),
qb.PrimaryKey("id"),
)
db, err := qb.New("sqlite3", "./qb_test.db")
if err != nil {
panic(err)
}
defer db.Close()
metadata := qb.MetaData()
// add table to metadata
metadata.AddTable(users)
// create all tables registered to metadata
metadata.CreateAll(db)
defer metadata.DropAll(db) // drops all tables
ins := qb.Insert(users).Values(map[string]interface{}{
"id": "b6f8bfe3-a830-441a-a097-1777e6bfae95",
"email": "[email protected]",
"full_name": "Jack Nicholson",
})
_, err = db.Exec(ins)
if err != nil {
panic(err)
}
// find user
var user User
sel := qb.Select(users.C("id"), users.C("email"), users.C("full_name")).
From(users).
Where(users.C("id").Eq("b6f8bfe3-a830-441a-a097-1777e6bfae95"))
err = db.Get(sel, &user)
fmt.Printf("%+v\n", user)
}
Credits
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,423 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,763 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,309 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,453 stars