如何使用go语言的beego框架的orm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用go语言的beego框架的orm相关的知识,希望对你有一定的参考价值。
参考技术A 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 := UserId: 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)
则执行结果不会提示。本回答被提问者和网友采纳
以上是关于如何使用go语言的beego框架的orm的主要内容,如果未能解决你的问题,请参考以下文章