Go語言使用SQLite實現(xiàn)本地存儲的示例詳解
在開發(fā)工具類軟件、桌面應(yīng)用或者移動端時,我們經(jīng)常需要一個輕量級數(shù)據(jù)庫來做 本地存儲。相比 MySQL、Postgres 等服務(wù)型數(shù)據(jù)庫,SQLite 體積小、零配置、單文件存儲,非常適合這種場景。
Go 語言通過 GORM + SQLite 驅(qū)動 就能輕松實現(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{})
}
運行后,會在當(dāng)前目錄下生成一個 notes.db 文件,里面存儲了表結(jié)構(gòu)和數(shù)據(jù)。
三、實現(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í)計劃", "每天刷 1 個實戰(zhàn)案例")
createNote("購物清單", "牛奶、面包、雞蛋")
// 查詢
getNotes()
// 更新
updateNote(1, "每天刷 2 個實戰(zhàn)案例")
getNotes()
// 刪除
deleteNote(2)
getNotes()
}
五、運行效果
首次運行,會生成 notes.db 文件。SQLite 可以用 命令行工具或第三方軟件(如 DB Browser for SQLite) 打開查看。
程序日志:
新增筆記成功: {1 Go 學(xué)習(xí)計劃 每天刷 1 個實戰(zhàn)案例}
新增筆記成功: {2 購物清單 牛奶、面包、雞蛋}
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 1 個實戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
更新筆記成功, ID: 1
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 2 個實戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
刪除筆記成功, ID: 2
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 2 個實戰(zhàn)案例}]
六、總結(jié)
通過本案例,我們實現(xiàn)了:
- 使用 GORM + SQLite 搭建 本地存儲數(shù)據(jù)庫
- 自動遷移模型(建表)
- 實現(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實現(xiàn)本地存儲的示例詳解的文章就介紹到這了,更多相關(guān)Go SQLite本地存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang實現(xiàn)對map的并發(fā)讀寫的方法示例
這篇文章主要介紹了Golang實現(xiàn)對map的并發(fā)讀寫的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
k8s容器互聯(lián)-flannel?host-gw原理篇
這篇文章主要為大家介紹了k8s容器互聯(lián)-flannel?host-gw原理篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
grpc-go如何通過context傳遞額外數(shù)據(jù)
metadata是grpc內(nèi)置的,用RPC服務(wù)傳遞http頭數(shù)據(jù),分in和out兩種,對應(yīng)的key都為一個空struct,這篇文章主要介紹了grpc-go通過context傳遞額外數(shù)據(jù),需要的朋友可以參考下2024-02-02

