这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天。
这里学习使用GORM连接mysql数据库进行简单的增删改查操作。
首先,下载mysql数据库,创建一个表,并手动创建几个数据用于测试。
若要使用mysql数据库,需要先安装包:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
连接数据库需要用到DSN:
这里写一下DSN的格式:
username:password@tcp(host:port)/Dbname?charset=utf8&parseTime=True&loc=Local
其中,username 数据库账号 password 数据库密码 host 数据库连接地址,可以是Ip或者域名 port 数据库端口 Dbname 数据库名 charset=utf8 客户端字符集为utf8 parseTime=true 支持把数据库datetime和date类型转换为golang的time.Time类型 loc=Local 使用系统本地时区.
连接完成数据库后,可进行增删改查操作,具体api使用方法可查阅官方文档:
https://gorm.io/docs/index.html
全部代码如下,这里使用的是我之前的一个数据库,里面本身包含一些数据,如果是刚创建的数据库,可以先增加一些数据方便测试。
package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"time"
)
type Pointcloud struct {
Id int `gorm:"primaryKey;AUTO_INCREMENT"`
Filename string
Filepath string
Classification string
Date time.Time
Location string
}
func (p Pointcloud) TableName() string {
return "process_fileinfo"
}
func main() {
db, err := gorm.Open(
mysql.Open("root:XXXXXXX@tcp(127.0.0.1:3306)/web_pointcloud?charset=utf8&parseTime=True&loc=Local"),
&gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
var pointcloud Pointcloud
//查
db.First(&pointcloud)
fmt.Println(pointcloud)
var pointclouds []Pointcloud
db.Where("id > ? AND id < ?", "10", "30").Find(&pointclouds)
fmt.Println(pointclouds)
//增
pointcloud = Pointcloud{Filename: "测试创建", Filepath: "测试创建路径", Classification: "测试", Date: time.Now(), Location: "测试地址"}
db.Create(&pointcloud)
//改
db.Model(&pointcloud).Update("filename", "测试创建后改")
//删
db.Delete(&Pointcloud{}, 10)
}
数据库情况:
运行结果:
总结:对于不熟悉的框架,要善于阅读官方文档,一般官方文档中都会有较为详细的描述。