在開發工具類軟件、桌面應用或者移動端時,我們經常需要一個輕量級數據庫來做?本地存儲。相比 MySQL、Postgres 等服務型數據庫,SQLite?體積小、零配置、單文件存儲,非常適合這種場景。
Go 語言通過?GORM?+?SQLite 驅動?就能輕松實現。本文將帶你一步步用 Go 搭建一個 SQLite 本地存儲的示例。
一、環境準備
安裝依賴庫:
go?get?-u?gorm.io/gorm
go?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(¬e)log.Println("新增筆記成功:",?note)
}
2. 查詢數據
func?getNotes()?{var?notes?[]Notedb.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 的完整環境