go语言之beego框架orm的使用

zistxym · · 6558 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

models.go

============================

package main


import (
    "github.com/astaxie/beego/orm"
)

type User struct {
    Id      int
    Name    string
    Profile *Profile `orm:"rel(one)"` // OneToOne relation
}

type Profile struct {
    Id   int
    Age  int16
    User *User `orm:"reverse(one)"` // 设置反向关系(可选)
}

func init() {
    // 需要在init中注册定义的model

    orm.RegisterModel(new(User), new(Profile))

}

main.go

==============

package main

import (
    "fmt"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

func init() {
    //orm.RegisterModel(new(User))

    orm.RegisterDataBase("default", "mysql", "ta3:ta3@/ta3?charset=utf8")
    orm.RunSyncdb("default", false, true)  // true 改成false,如果表存在则会给出提示,如果改成false则不会提示 , 这句话没有会报主键不存在的错误
}

func main() {
    o := orm.NewOrm()
    o.Using("default") // 默认使用 default,你可以指定为其他数据库

    user := User{Id: 1}

    err := o.Read(&user)

    if err == orm.ErrNoRows {
        fmt.Println("查询不到")
    } else if err == orm.ErrMissPK {
        fmt.Println("找不到主键")
    } else {
        fmt.Println(user.Id, user.Name)
    }
}

执行结果:

create table `user`
    -- --------------------------------------------------
    --  Table Structure for `main.User`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `user` (
        `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
        `name` varchar(255) NOT NULL,
        `profile_id` integer NOT NULL UNIQUE
    ) ENGINE=InnoDB;

create table `profile`
    -- --------------------------------------------------
    --  Table Structure for `main.Profile`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `profile` (
        `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
        `age` smallint NOT NULL
    ) ENGINE=InnoDB;

查询不到


 第二次再执行:

table `user` already exists, skip
table `profile` already exists, skip
查询不到


如果  orm.RunSyncdb("default", false, true)改成  orm.RunSyncdb("default", false, false)

则执行结果不会提示。


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:zistxym

查看原文:go语言之beego框架orm的使用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6558 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传