Go語言使用SQLite實(shí)現(xiàn)本地存儲的示例詳解
在開發(fā)工具類軟件、桌面應(yīng)用或者移動端時,我們經(jīng)常需要一個輕量級數(shù)據(jù)庫來做 本地存儲。相比 MySQL、Postgres 等服務(wù)型數(shù)據(jù)庫,SQLite 體積小、零配置、單文件存儲,非常適合這種場景。
Go 語言通過 GORM + SQLite 驅(qū)動 就能輕松實(shí)現(xiàn)。本文將帶你一步步用 Go 搭建一個 SQLite 本地存儲的示例。
一、環(huán)境準(zhǔn)備
安裝依賴庫:
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
// 創(chuàng)建/連接 SQLite 文件數(shù)據(jù)庫
db, err = gorm.Open(sqlite.Open("notes.db"), &gorm.Config{})
if err != nil {
log.Fatal("數(shù)據(jù)庫連接失敗:", err)
}
// 自動遷移
_ = db.AutoMigrate(&Note{})
}
運(yùn)行后,會在當(dāng)前目錄下生成一個 notes.db 文件,里面存儲了表結(jié)構(gòu)和數(shù)據(jù)。
三、實(shí)現(xiàn)基本的本地存儲操作
1. 新增數(shù)據(jù)
func createNote(title, content string) {
note := Note{Title: title, Content: content}
db.Create(¬e)
log.Println("新增筆記成功:", note)
}
2. 查詢數(shù)據(jù)
func getNotes() {
var notes []Note
db.Find(¬es)
log.Println("所有筆記:", notes)
}
3. 更新數(shù)據(jù)
func updateNote(id uint, newContent string) {
db.Model(&Note{}).Where("id = ?", id).Update("content", newContent)
log.Println("更新筆記成功, ID:", id)
}
4. 刪除數(shù)據(jù)
func deleteNote(id uint) {
db.Delete(&Note{}, id)
log.Println("刪除筆記成功, ID:", id)
}
四、測試本地存儲
func main() {
initDB()
// 新增兩條筆記
createNote("Go 學(xué)習(xí)計(jì)劃", "每天刷 1 個實(shí)戰(zhàn)案例")
createNote("購物清單", "牛奶、面包、雞蛋")
// 查詢
getNotes()
// 更新
updateNote(1, "每天刷 2 個實(shí)戰(zhàn)案例")
getNotes()
// 刪除
deleteNote(2)
getNotes()
}
五、運(yùn)行效果
首次運(yùn)行,會生成 notes.db 文件。SQLite 可以用 命令行工具或第三方軟件(如 DB Browser for SQLite) 打開查看。
程序日志:
新增筆記成功: {1 Go 學(xué)習(xí)計(jì)劃 每天刷 1 個實(shí)戰(zhàn)案例}
新增筆記成功: {2 購物清單 牛奶、面包、雞蛋}
所有筆記: [{1 Go 學(xué)習(xí)計(jì)劃 每天刷 1 個實(shí)戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
更新筆記成功, ID: 1
所有筆記: [{1 Go 學(xué)習(xí)計(jì)劃 每天刷 2 個實(shí)戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
刪除筆記成功, ID: 2
所有筆記: [{1 Go 學(xué)習(xí)計(jì)劃 每天刷 2 個實(shí)戰(zhàn)案例}]
六、總結(jié)
通過本案例,我們實(shí)現(xiàn)了:
- 使用 GORM + SQLite 搭建 本地存儲數(shù)據(jù)庫
- 自動遷移模型(建表)
- 實(shí)現(xiàn)了 CRUD 操作(增刪改查)
- 數(shù)據(jù)存儲在單個
notes.db文件中,方便移植與備份
SQLite 非常適合:
- 桌面應(yīng)用:比如記事本、數(shù)據(jù)分析工具
- 移動應(yīng)用:本地緩存、用戶數(shù)據(jù)存儲
- 輕量級服務(wù):不需要 MySQL/Postgres 的完整環(huán)境
到此這篇關(guān)于Go語言使用SQLite實(shí)現(xiàn)本地存儲的示例詳解的文章就介紹到這了,更多相關(guān)Go SQLite本地存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言并發(fā)之Sync包的6個關(guān)鍵概念總結(jié)
這篇文章主要為大家詳細(xì)介紹了Go語言并發(fā)中Sync包的6個關(guān)鍵概念,文中的示例代碼講解詳細(xì),對我們深入學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下2023-05-05
Golang使用泛型對數(shù)組進(jìn)行去重的實(shí)現(xiàn)
本文主要介紹了Golang使用泛型對數(shù)組進(jìn)行去重的實(shí)現(xiàn),通過使用類型參數(shù)T和類型約束any,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
從Context到go設(shè)計(jì)理念輕松上手教程
這篇文章主要為大家介紹了從Context到go設(shè)計(jì)理念輕松上手教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

