2015-10-22

beego Tutorial 3 : 모델 생성



  • xyz/models/admin.go 파일을 작성한다.
    package models
     
    type Admin struct {
        Id       int
        Userid   string `orm:"unique"`
        Password string
        Nick     string `orm:"unique"`
    }
  • xyz/models/common.go 파일을 작성한다.
    package models
     
    import (
        "github.com/astaxie/beego/orm"
    )
     
    func init() {
        orm.RegisterModelWithPrefix("tb_", new(Admin))
    }
  • xyz/main.go 파일을 아래처럼 수정한다.
    package main
     
    import (
        "fmt"
        "github.com/astaxie/beego"
        "github.com/astaxie/beego/orm"
        _ "github.com/mattn/go-sqlite3"
        _ "xyz/models" // models 아래의 init() 가 작동하려면 필요
        _ "xyz/routers"
    )
     
    func init() {
        orm.RegisterDriver("sqlite3", orm.DR_Sqlite)
        orm.RegisterDataBase("default", "sqlite3", "xyz.db")
        name := "default"
        force := false
        verbose := true
        err := orm.RunSyncdb(name, force, verbose)
        if err != nil {
            fmt.Println(err)
        }
    }
     
    func main() {
        beego.Run()
    }
  • 위와 같이 소스파일들을 작성하고 bee run 을 하여 실행하면, xyz/xyz.db 파일이 생성된 것을 확인할 수 있으며, 다음과 같이 테이블이 생성된 것도 볼 수 있다.
    $ sqlite3 xyz.db
    sqlite> .tables
    tb_admin
    sqlite> .schema tb_admin
    CREATE TABLE `tb_admin` (
        `id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `userid` varchar(255) NOT NULL DEFAULT ''  UNIQUE,
        `password` varchar(255) NOT NULL DEFAULT '' ,
        `nick` varchar(255) NOT NULL DEFAULT ''  UNIQUE
    );
    sqlite> insert into tb_admin(userid, password, nick) values('testid1', 'passwd1', 'nick1');
    sqlite> insert into tb_admin(userid, password, nick) values('testid2', 'passwd2', 'nick2');
    sqlite> insert into tb_admin(userid, password, nick) values('testid3', 'passwd3', 'nick3');
    sqlite> insert into tb_admin(userid, password, nick) values('testid4', 'passwd4', 'nick4');
    sqlite> insert into tb_admin(userid, password, nick) values('testid5', 'passwd5', 'nick5');
    sqlite> select * from tb_admin;
    1|testid1|passwd1|nick1
    2|testid2|passwd2|nick2
    3|testid3|passwd3|nick3
    4|testid4|passwd4|nick4
    5|testid5|passwd5|nick5
    sqlite> .quit

댓글 없음:

댓글 쓰기