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
一般使用自定义表名
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗