首页 > 数据库 >Golang 不使用官方基于cgo的sqlite驱动

Golang 不使用官方基于cgo的sqlite驱动

时间:2023-12-30 19:44:27浏览次数:33  
标签:sqlite cgo err Open Golang model SqliteConn gorm

参考以下的代码:

package database

import (
	"Forensics_Equipment_Plugin_Manager/logger"
	"Forensics_Equipment_Plugin_Manager/model"
	"github.com/glebarez/sqlite"
	"gorm.io/gorm"
)

var SqliteConn *gorm.DB

func init() {
	InitDb()
}

func InitDb() {
	// 1. 获取连接
	var err error
	//SqliteConn, err = gorm.Open(sqlite.Open(store.SqliteDsn), &gorm.Config{})
	//SqliteConn, err = gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
	SqliteConn, err = gorm.Open(sqlite.Open("/home/demo/db.db"), &gorm.Config{})
	if err != nil {
		panic(err)
	}
	logger.Log.Info("SQLite initializing succeed!")

	//	2. 自动迁移
	err = SqliteConn.AutoMigrate(
		&model.Plugins{},
		&model.Group{},
		&model.RecordInstruct{},
	)
	if err != nil {
		logger.Log.Error("AutoMigrate: ", err)
		return
	}
	//SqliteConn.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&model.RecordInstruct{})
	// 3. 如果为空表添加示例数据
	AddDemoTest()
}

// UpdateByInstance 将数据库中的数据更新成指定行。¥
// 未测试
func UpdateByInstance(value any) (rowsAffected int) {
	SqliteConn.Updates(value)
	rowsAffected = int(SqliteConn.RowsAffected)
	return
}

标签:sqlite,cgo,err,Open,Golang,model,SqliteConn,gorm
From: https://www.cnblogs.com/runninginsilence/p/17936713

相关文章

  • Golang开发环境搭建-Vim篇
    本文于2017年3月份完成,发布在个人博客网站上。考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。最近在研究docker的使用方法,恰好手边有一本docker源码分析的书,所以在ubuntu环境下准备了一套golang的开发环境,便于在学习docker使用的时候顺便学习gol......
  • Golang - sync.Pool底层源码详解
    sync.Pool是sync包下的一个组件,用来提高对象复用几率,减少gc的压力,减少内存分配,它是并发安全的,常用来存储并复用临时对象。任何存放区其中的值可以在任何时候被删除而不通知,在高负载下可以动态的扩容,在不活跃时对象池会收缩。可伸缩的,其大小仅受限于内存的大小,可以被看作是一......
  • 在Python中,如果你想查找特定的SQLite数据库文件(例如'mydatabase.db'),你可以使用os模块
    这是Python中os.walk()函数的常见用法¹²⁴⁵⁶。os.walk()函数用于递归遍历指定目录及其子目录,并返回一个生成器,每次迭代都会返回一个包含三个元素的元组:当前目录的路径、当前目录下所有子目录的列表和当前目录下所有文件的列表¹²⁴⁵⁶。在fordirpath,dirnames,filenamesi......
  • Golang合并、通过逗号拆分字符串
    Golang开发常用函数将逗号分隔的字符串转换为数组,将数组slice转为逗号分隔的string字符串,以及strings的其他函数。一、Go开发中最常用函数1.将数组slice转为逗号分隔的string字符串strings.Join(a[]string,sepstring)string或者strings.Join(str_arr,",")示例代码:......
  • golang对map排序
    golang中map元素是随机无序的,所以在对maprange遍历的时候也是随机的,不像php中是按顺序。所以如果想按顺序取map中的值,可以采用以下方式:import("fmt""sort")funcmain(){m:=make(map[int]string)m[1]="a"m[2]="c"m[0]="b"......
  • go-carbon v2.3.1 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......
  • 【golang】怎么在Go语言中实现锁机制
    Go语言的锁在Go语言中,最常用的锁是互斥锁(Mutex)。互斥锁是一种特殊的二进制信号量,用于控制对共享资源的访问。Go语言通过标准库中的"sync"包提供了互斥锁的功能。互斥锁的类型定义如下:type Mutex struct {    state int32    sema  uint32}其中state字段用于记......
  • 【Golang】Golang的跳一跳
    一、基本概念在Go语言中,代码跳转是指从一个位置跳转到另一个位置。一般而言,我们可以通过函数调用进行代码跳转,也可以通过goto语句进行跳转。不同的跳转方式有不同的适用场景。二、函数调用函数是Go语言中的基本构建块之一。调用函数时,程序的执行流程会跳转到被调用的函数中,并在......
  • 【golang】Go语言实现数据转发功能
    首先,我们需要考虑数据实体的格式。在许多情况下,使用JSON格式最为方便。Go语言中有一个标准库“encoding/json”可以提供JSON编解码功能。我们可以使用它来将我们的数据序列化为JSON格式,并将其发送到目标组件中。接下来,我们需要选择一种合适的网络协议来实现数据传输。常用的协议......
  • 【golang】Go语言中interface类型怎么使用
    1、Go语言中interface类型的定义 在Go语言中,interface类型是一个抽象的类型,它是一组方法签名的集合,只要某个类型实现了这些方法,它就属于该interface类型。在Go语言中定义一个interface类型的方法,需要使用interface关键字。下面是interface类型的完整定义方式:type interfac......