Popularity
4.1
Declining
Activity
0.0
Stable
59
6
29

Programming language: Go
License: MIT License
Tags: Database    
Latest version: v1.0.0

godbal alternatives and similar packages

Based on the "Database" category.
Alternatively, view godbal alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of godbal or a related project?

Add another 'Database' Package

README

godbal GoDoc GoDoc Go Report Card Coverage Status License Awesome

Database Abstraction Layer (dbal) for go (now only support mysql)

Motivation

I wanted a DBAL that No ORMNo ReflectConcurrency Save, support SQL builder following good practices and well tested code.

Requirements

Go 1.7 or above.

Installation

go get github.com/xujiajun/godbal

Supported Databases

  • mysql

Getting Started

Godbal helps you build SQL queries from composable parts easily:

database, _ := godbal.NewMysql("root:123@tcp(127.0.0.1:3306)/test?charset=utf8").Open()
queryBuilder := mysql.NewQueryBuilder(database)
    sql := queryBuilder.Select("uid,username,price,flag").From("userinfo", "").SetFirstResult(0).
        SetMaxResults(3).OrderBy("uid", "DESC").GetSQL()

    fmt.Println(sql) 

Output:

SELECT uid,username,price,flag FROM userinfo ORDER BY uid DESC LIMIT 0,3

Godbal helps you get result easily:

rows, _ := queryBuilder.QueryAndGetMap()
jsonString, _ := json.Marshal(&rows)
fmt.Print(string(jsonString)) 

Output like:

 {"0":{"flag":"1","price":"111.00","uid":"6","username":"johnny2"},"1":{"flag":"1","price":"111.00","uid":"5","username":"johnny2"},"2":{"flag":"0","price":"123.99","uid":"4","username":"joe"}}

Full example:

package main

import (
    "encoding/json"
    "fmt"

    _ "github.com/go-sql-driver/mysql"
    "github.com/xujiajun/godbal"
    "github.com/xujiajun/godbal/driver/mysql"
)

func main() {
    database, err := godbal.NewMysql("root:123@tcp(127.0.0.1:3306)/test?charset=utf8").Open()
    if err != nil {
        panic(err)
    }

    err = database.Ping()
    if err != nil {
        panic(err)
    }

    queryBuilder := mysql.NewQueryBuilder(database)
    sql := queryBuilder.Select("uid,username,price,flag").From("userinfo", "").SetFirstResult(0).
        SetMaxResults(3).OrderBy("uid", "DESC").GetSQL()

    fmt.Println(sql) // SELECT uid,username,price,flag FROM userinfo ORDER BY uid DESC LIMIT 0,3

    rows, _ := queryBuilder.QueryAndGetMap()

    jsonString, _ := json.Marshal(&rows)
    fmt.Print(string(jsonString)) 
  // result like: {"0":{"flag":"1","price":"111.00","uid":"6","username":"johnny2"},"1":{"flag":"1","price":"111.00","uid":"5","username":"johnny2"},"2":{"flag":"0","price":"123.99","uid":"4","username":"joe"}}
}

More examples

Contributing

If you'd like to help out with the project. You can put up a Pull Request.

Author

License

The godbal is open-sourced software licensed under the MIT Licensed


*Note that all licence references and agreements mentioned in the godbal README section above are relevant to that project's source code only.