北京合众恒跃科技有限公司
直播中

jf_50393217

5年用户 227经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[经验]

【HZ-T536开发板免费体验】5、安装sqlite3和使用golang读写数据库

如果想在嵌入式设备上实现简单的设备管理功能,需要数据库和服务后端程序。服务端程序,我更倾向使用golang来实现。

安装sqlite3,使用ubuntu环境,可以直接用apt install安装程序

apt install sqlite3

然后下载golang编译环境。这里我们直接去官网下载就行。
image.png

在官网复制红色框这个链接地址,然后我们在终端里执行命令下载

wget https://golang.google.cn/dl/go1.25.0.linux-arm64.tar.gz

下载完毕后,我们需要把编译环境解压缩到指定目录里。我习惯在用户目录里创建一个.bin目录,然后放进去。

mkdir $HOME/.bin
cd $HOME/.bin
tar xf $HOME/go1.25.0.linux-arm64.tar.gz

解压缩结束后,需要在环境变量里添加golang的bin目录,以及GOPATH设置(用于安装golang的模块和全局命令程序)。

我们可以在.bashrc里配置好。

# PATH setting
export MYBIN=$HOME/.bin

# GO
export GOPATH=$HOME/go
export PATH=$MYBIN/go/bin:$PATH
export PATH=$GOPATH/bin:$PATH

另外,golang的国内源配置也要记得加上

go env -w GO111MODULE=onexport GOPROXY=https://goproxy.cn,direct

然后执行source ~/.bashrc ,更新环境变量配置就可以了

这时候就可以直接使用go命令了。先安装gorm和sqlite的依赖库

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite

然后按照官方demo改一下

package main

import (
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

type Product struct {
	gorm.Model
	Code  string
	Price uint
}

func main() {
	db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	// Migrate the schema
	db.AutoMigrate(&Product{})

	// // // Create
	db.Create(&Product{Code: "F42", Price: 100})

	// Read
	var product Product
	db.First(&product, 1)                 // find product with integer primary key
	db.First(&product, "code = ?", "S42") // find product with code D42

	// Update - update product's price to 200
	db.Model(&product).Update("Price", 200)
	// Update - update multiple fields
	db.Model(&product).Updates(Product{Price: 200, Code: "D42"}) // non-zero fields
	db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

	// // Delete - delete product
	db.Delete(&product, 1)
}

接下来运行一下go run simpleDB.go,首次运行这个程序不会有报错,我们使用sqlite3看一下数据库实际的数据内容。

可以看到,代码正常运行了,数据也是对的,删除时间是GORM生成的,用于标记这个数据项已经被删除了。

image.png

也可以把数据表的具体栏目给显示一下
image.png

更多回帖

发帖
×
20
完善资料,
赚取积分