github.com/astaxie/beego@v1.12.3/orm/README.md (about)

     1  # beego orm
     2  
     3  [![Build Status](https://drone.io/github.com/astaxie/beego/status.png)](https://drone.io/github.com/astaxie/beego/latest)
     4  
     5  A powerful orm framework for go.
     6  
     7  It is heavily influenced by Django ORM, SQLAlchemy.
     8  
     9  **Support Database:**
    10  
    11  * MySQL: [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
    12  * PostgreSQL: [github.com/lib/pq](https://github.com/lib/pq)
    13  * Sqlite3: [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
    14  
    15  Passed all test, but need more feedback.
    16  
    17  **Features:**
    18  
    19  * full go type support
    20  * easy for usage, simple CRUD operation
    21  * auto join with relation table
    22  * cross DataBase compatible query
    23  * Raw SQL query / mapper without orm model
    24  * full test keep stable and strong
    25  
    26  more features please read the docs
    27  
    28  **Install:**
    29  
    30  	go get github.com/astaxie/beego/orm
    31  
    32  ## Changelog
    33  
    34  * 2013-08-19: support table auto create
    35  * 2013-08-13: update test for database types
    36  * 2013-08-13: go type support, such as int8, uint8, byte, rune
    37  * 2013-08-13: date / datetime timezone support very well
    38  
    39  ## Quick Start
    40  
    41  #### Simple Usage
    42  
    43  ```go
    44  package main
    45  
    46  import (
    47  	"fmt"
    48  	"github.com/astaxie/beego/orm"
    49  	_ "github.com/go-sql-driver/mysql" // import your used driver
    50  )
    51  
    52  // Model Struct
    53  type User struct {
    54  	Id   int    `orm:"auto"`
    55  	Name string `orm:"size(100)"`
    56  }
    57  
    58  func init() {
    59  	// register model
    60  	orm.RegisterModel(new(User))
    61  
    62  	// set default database
    63  	orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)
    64  	
    65  	// create table
    66  	orm.RunSyncdb("default", false, true)	
    67  }
    68  
    69  func main() {
    70  	o := orm.NewOrm()
    71  
    72  	user := User{Name: "slene"}
    73  
    74  	// insert
    75  	id, err := o.Insert(&user)
    76  
    77  	// update
    78  	user.Name = "astaxie"
    79  	num, err := o.Update(&user)
    80  
    81  	// read one
    82  	u := User{Id: user.Id}
    83  	err = o.Read(&u)
    84  
    85  	// delete
    86  	num, err = o.Delete(&u)	
    87  }
    88  ```
    89  
    90  #### Next with relation
    91  
    92  ```go
    93  type Post struct {
    94  	Id    int    `orm:"auto"`
    95  	Title string `orm:"size(100)"`
    96  	User  *User  `orm:"rel(fk)"`
    97  }
    98  
    99  var posts []*Post
   100  qs := o.QueryTable("post")
   101  num, err := qs.Filter("User__Name", "slene").All(&posts)
   102  ```
   103  
   104  #### Use Raw sql
   105  
   106  If you don't like ORM,use Raw SQL to query / mapping without ORM setting
   107  
   108  ```go
   109  var maps []Params
   110  num, err := o.Raw("SELECT id FROM user WHERE name = ?", "slene").Values(&maps)
   111  if num > 0 {
   112  	fmt.Println(maps[0]["id"])
   113  }
   114  ```
   115  
   116  #### Transaction
   117  
   118  ```go
   119  o.Begin()
   120  ...
   121  user := User{Name: "slene"}
   122  id, err := o.Insert(&user)
   123  if err == nil {
   124  	o.Commit()
   125  } else {
   126  	o.Rollback()
   127  }
   128  
   129  ```
   130  
   131  #### Debug Log Queries
   132  
   133  In development env, you can simple use
   134  
   135  ```go
   136  func main() {
   137  	orm.Debug = true
   138  ...
   139  ```
   140  
   141  enable log queries.
   142  
   143  output include all queries, such as exec / prepare / transaction.
   144  
   145  like this:
   146  
   147  ```go
   148  [ORM] - 2013-08-09 13:18:16 - [Queries/default] - [    db.Exec /     0.4ms] - [INSERT INTO `user` (`name`) VALUES (?)] - `slene`
   149  ...
   150  ```
   151  
   152  note: not recommend use this in product env.
   153  
   154  ## Docs
   155  
   156  more details and examples in docs and test
   157  
   158  [documents](http://beego.me/docs/mvc/model/overview.md)
   159