/* When using xorm, you can create multiple orm engines, an engine means a database. */ package main import ( // Core. "fmt" "os" // SQLite 3 _ "github.com/mattn/go-sqlite3" // MySQL. Use either driver. // _ "github.com/go-sql-driver/mysql" // _ "github.com/ziutek/mymysql" // PostgreSQL // _ "github.com/lib/pq" // SQL Server // _ "github.com/lunny/godbc" // XORM. "github.com/go-xorm/xorm" // Others. // "github.com/davecgh/go-spew/spew" ) func check(err error) { if err != nil { fmt.Println(err.Error()) os.Exit(1) } } func NewOrm() *xorm.Engine { // NewEngine parameters are those of the SQL driver: driver and DSN. engine, err := xorm.NewEngine("sqlite3", "./test.db") check(err) fmt.Println("ORM loaded") return engine } func setupLogging(engine *xorm.Engine) { // Enable built-in Logging features. engine.ShowSQL = true engine.ShowDebug = true engine.ShowErr = true engine.ShowWarn = true // Optional: declare a custom logger. f, err := os.Create("sql.log") check(err) engine.SetLogger(xorm.NewSimpleLogger(f)) } func main() { var engine *xorm.Engine = NewOrm() setupLogging(engine) // Optional: limit connections. const CONNECTION_LIMIT = 4 engine.SetMaxOpenConns(CONNECTION_LIMIT) // The number of idle connections is bound by the number of open ones. engine.SetMaxIdleConns(CONNECTION_LIMIT) // Not needed: called automatically on exit. engine.Close() fmt.Println("ORM closed") }