Go语言使用SQLite实现本地存储的示例详解
作者:程序员爱钓鱼
在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做本地存储,本文将带你一步步用 Go 搭建一个 SQLite 本地存储的示例,希望对大家有所帮助
在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做 本地存储。相比 MySQL、Postgres 等服务型数据库,SQLite 体积小、零配置、单文件存储,非常适合这种场景。
Go 语言通过 GORM + SQLite 驱动 就能轻松实现。本文将带你一步步用 Go 搭建一个 SQLite 本地存储的示例。
一、环境准备
安装依赖库:
go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite
二、定义模型
我们以一个 Note
记事本模型为例:
package main import ( "gorm.io/driver/sqlite" "gorm.io/gorm" "log" ) // Note 记事本模型 type Note struct { ID uint `gorm:"primaryKey"` Title string `gorm:"size:100"` Content string } var db *gorm.DB func initDB() { var err error // 创建/连接 SQLite 文件数据库 db, err = gorm.Open(sqlite.Open("notes.db"), &gorm.Config{}) if err != nil { log.Fatal("数据库连接失败:", err) } // 自动迁移 _ = db.AutoMigrate(&Note{}) }
运行后,会在当前目录下生成一个 notes.db
文件,里面存储了表结构和数据。
三、实现基本的本地存储操作
1. 新增数据
func createNote(title, content string) { note := Note{Title: title, Content: content} db.Create(¬e) log.Println("新增笔记成功:", note) }
2. 查询数据
func getNotes() { var notes []Note db.Find(¬es) log.Println("所有笔记:", notes) }
3. 更新数据
func updateNote(id uint, newContent string) { db.Model(&Note{}).Where("id = ?", id).Update("content", newContent) log.Println("更新笔记成功, ID:", id) }
4. 删除数据
func deleteNote(id uint) { db.Delete(&Note{}, id) log.Println("删除笔记成功, ID:", id) }
四、测试本地存储
func main() { initDB() // 新增两条笔记 createNote("Go 学习计划", "每天刷 1 个实战案例") createNote("购物清单", "牛奶、面包、鸡蛋") // 查询 getNotes() // 更新 updateNote(1, "每天刷 2 个实战案例") getNotes() // 删除 deleteNote(2) getNotes() }
五、运行效果
首次运行,会生成 notes.db
文件。SQLite 可以用 命令行工具或第三方软件(如 DB Browser for SQLite) 打开查看。
程序日志:
新增笔记成功: {1 Go 学习计划 每天刷 1 个实战案例}
新增笔记成功: {2 购物清单 牛奶、面包、鸡蛋}
所有笔记: [{1 Go 学习计划 每天刷 1 个实战案例} {2 购物清单 牛奶、面包、鸡蛋}]
更新笔记成功, ID: 1
所有笔记: [{1 Go 学习计划 每天刷 2 个实战案例} {2 购物清单 牛奶、面包、鸡蛋}]
删除笔记成功, ID: 2
所有笔记: [{1 Go 学习计划 每天刷 2 个实战案例}]
六、总结
通过本案例,我们实现了:
- 使用 GORM + SQLite 搭建 本地存储数据库
- 自动迁移模型(建表)
- 实现了 CRUD 操作(增删改查)
- 数据存储在单个
notes.db
文件中,方便移植与备份
SQLite 非常适合:
- 桌面应用:比如记事本、数据分析工具
- 移动应用:本地缓存、用户数据存储
- 轻量级服务:不需要 MySQL/Postgres 的完整环境
到此这篇关于Go语言使用SQLite实现本地存储的示例详解的文章就介绍到这了,更多相关Go SQLite本地存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!