orm-连接和创建数据库

orm-连接和创建数据库

本节知识点
-连接数据库
-创建模型和自动建表
-模型属性

https://beego.me/docs/mvc/model/query.md
关于orm 的数据库增删改查 查阅官方文档即可

连接数据库

需要先安装mysql

import
github.com/astaxie/beego/orm
_github.com/go-sql-driver/mysql
_导入表模型的路径

go mod vendor 导入包

连接数据库

main.go

func init() {

	//获取app.conf 中的配置
	MysqlUser := beego.AppConfig.String("MysqlUser")
	MysqlHost := beego.AppConfig.String("MysqlHost")
	MysqlPassword := beego.AppConfig.String("MysqlPassword")
	MysqlPort := beego.AppConfig.String("MysqlPort")
	MysqlDatabase := beego.AppConfig.String("MysqlDatabase")

	//从某一版本开始,驱动默认使用 UTC 时间,而非本地时间,所以请指定时区参数或者全部以 UTC 时间存取
	//时区要么统一指定 UTF-8 时区 要么使用本地时区
	dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&loc=Local",
		MysqlUser,
		MysqlPassword,
		MysqlHost,
		MysqlPort,
		MysqlDatabase)
	//fmt.Println(" : " + dataSource) 打印连接地址

	//注册数据库驱动
	orm.RegisterDriver("mysql", orm.DRMySQL)

	//连接数据库,
	//"default"-数据库别名
	//用于区分多个数据库连接,必须要有一个default
	orm.RegisterDataBase("default", "mysql", dataSource)
  
   //自动建表
   //在beego.run 前调用orm.RunCommand()
   //需要先实现数据表模型,见下面model/m_user.go
   //参数一:数据库
   //参数二:表存在时是否删除重建
   //参数三:打印建表信息
   err := orm.RunSyncdb("default", false, true)
   if err != nil {
      	panic(err)
   }
}

创建数据表模型

model/m_user.go

//1.创建模型
//user 结构体成员首字母大写
type user struct {
	//模型定义
	ID   int    `orm:"pk;auto;column(ID)"` //设置主键自增长
	Name string `orm:"unique;null"`
	Age         int       `orm:"null"`
	Addr        string    `orm:"column(Address);null"`
	UpdatedTime time.Time `orm:"auto_now;type(datetime)"`

	/*
                        `orm:"-"` 忽略字段
			`orm:"default(n)"` 设置默认值
			`orm:"null"` 允许为null
			`orm:"index"` 添加索引
			`orm:"unique"` 设置值不允许重复
			`orm:"column(Alias)"` 别名
			`orm:"size(n)"`` 定义string长度
			`orm:"digits(n);decimals(n)" 数字总长度;小数长度
			`orm:"description(注释)"` 添加注释
		CreatedTime time.Time `orm:"auto_now_add;type(datetime)"` 第一次保存时设置时间
		UpdatedTime time.Time `orm:"auto_now;type(datetime)"`	每次model保存时都会对时间自动更新
	*/
}

//2.注册模型
func init() {
	//把结构体注册为模型
	orm.RegisterModel(new(user))
}

//3.设置表名
func (u *user) TableName() string {
	return "blog_user"
}

/*
   自动建表
   前提:
   orm.RegisterDataBase 已注册数据库
   orm.RegisterDataBase 已注册模型
   在main.go中引入模型的包
   在beego.run 前调用orm.RunCommand()  
   建表
   方法一:命令行创建
   go run main.go orm
   方法二:代码创建
   orm.RunSyncdb()   
   模型名和表名映射规则:
   除了开头字的大写字母以外,遇见大写子前会增加_,并且改为小写
   eg:
   User->User
   UUser->U_user
   一般使用自定义表名   

*/


posted @   blackTree  阅读(309)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示