package database import ( "BlogFile/bootstrap" "log" "os" "sync" "github.com/glebarez/sqlite" "gorm.io/gorm" ) var GormTemplate *gorm.DB var rwMutex sync.RWMutex func init() { path := bootstrap.Config.Sqlite.Path log.Println("数据库文件位置:", path) // path := "./sqlite.db" _, err := os.Stat(path) if err != nil || os.IsNotExist(err) { panic("sqlite数据库文件不存在!") } GormTemplate, err = gorm.Open(sqlite.Open(path), &gorm.Config{}) if err != nil { panic("Gorm初始化异常!") } log.Println("SQLite连接成功,Gorm初始化完成") // db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{}) } // sqlite无法同时多个线程写入,需要上锁保护,读操作无需考虑 func WGorm(txFunc func(tx *gorm.DB) error) error { rwMutex.Lock() err := GormTemplate.Transaction(txFunc) rwMutex.Unlock() return err }