main.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. When using xorm, you can create multiple orm engines, an engine means a database.
  3. */
  4. package main
  5. import (
  6. // Core.
  7. "fmt"
  8. "os"
  9. // SQLite 3
  10. _ "github.com/mattn/go-sqlite3"
  11. // MySQL. Use either driver.
  12. // _ "github.com/go-sql-driver/mysql"
  13. // _ "github.com/ziutek/mymysql"
  14. // PostgreSQL
  15. // _ "github.com/lib/pq"
  16. // SQL Server
  17. // _ "github.com/lunny/godbc"
  18. // XORM.
  19. "github.com/go-xorm/xorm"
  20. // Others.
  21. // "github.com/davecgh/go-spew/spew"
  22. )
  23. func check(err error) {
  24. if err != nil {
  25. fmt.Println(err.Error())
  26. os.Exit(1)
  27. }
  28. }
  29. func NewOrm() *xorm.Engine {
  30. // NewEngine parameters are those of the SQL driver: driver and DSN.
  31. engine, err := xorm.NewEngine("sqlite3", "./test.db")
  32. check(err)
  33. fmt.Println("ORM loaded")
  34. return engine
  35. }
  36. func setupLogging(engine *xorm.Engine) {
  37. // Enable built-in Logging features.
  38. engine.ShowSQL = true
  39. engine.ShowDebug = true
  40. engine.ShowErr = true
  41. engine.ShowWarn = true
  42. // Optional: declare a custom logger.
  43. f, err := os.Create("sql.log")
  44. check(err)
  45. engine.SetLogger(xorm.NewSimpleLogger(f))
  46. }
  47. func main() {
  48. var engine *xorm.Engine = NewOrm()
  49. setupLogging(engine)
  50. // Optional: limit connections.
  51. const CONNECTION_LIMIT = 4
  52. engine.SetMaxOpenConns(CONNECTION_LIMIT)
  53. // The number of idle connections is bound by the number of open ones.
  54. engine.SetMaxIdleConns(CONNECTION_LIMIT)
  55. // Not needed: called automatically on exit.
  56. engine.Close()
  57. fmt.Println("ORM closed")
  58. }