> 技术文档 > Go语言实战案例-使用SQLite实现本地存储

Go语言实战案例-使用SQLite实现本地存储


在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做 本地存储。相比 MySQL、Postgres 等服务型数据库,SQLite 体积小、零配置、单文件存储,非常适合这种场景。

Go 语言通过 GORM + SQLite 驱动 就能轻松实现。本文将带你一步步用 Go 搭建一个 SQLite 本地存储的示例。


一、环境准备

安装依赖库:

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

二、定义模型

我们以一个 Note 记事本模型为例:

package mainimport (    \"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.DBfunc 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(&note)    log.Println(\"新增笔记成功:\", note)}

2. 查询数据

func getNotes() {    var notes []Note    db.Find(&notes)    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 的完整环境