前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用GORM判断数据库中数据是否存在异常?

如何使用GORM判断数据库中数据是否存在异常?

原创
作者头像
TSINGSEE青犀视频
修改于 2021-02-23 02:10:42
修改于 2021-02-23 02:10:42
4.2K00
代码可运行
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频
运行总次数:0
代码可运行

在编译EasyNVR的时候,我们为了防止数据库内的表重复,使用了sqlite3_exec函数来判断一个表是否存在。但在EasyDSS中,我们使用的是GORM方式。ORM是Golang目前比较热门的数据库ORM操作库,对开发者比较友好,使用也方便简单。在EasyDSS在调用该方式过程中,出现了以下错误:

具体函数代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 根据主键,判断是否存在
func (impl *BaseDaoImpl) Exists(id string) bool {
   dataType := reflect.TypeOf(impl.TableStruct)
   data := reflect.New(dataType)
 
   rowsAffects := impl.fromTable().First(&data, impl.WherePrimaryKey, id).RowsAffected
 
   if rowsAffects == 0 {
      return false
   }
 
   return true
}

可以看到以上代码使用了First函数查询数据,查看对应的描述:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// First find first record that match given conditions, order by primary key

说明此函数需要使用传入主键,才能解决此问题,因此我们需要将data数据传入主键。但是代码中因为data为反射出来的数据添加id数据不够方便,因此直接使用Find函数代替First函数,即解决此问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 根据主键,判断是否存在
func (impl *BaseDaoImpl) Exists(id string) bool {
   dataType := reflect.TypeOf(impl.TableStruct)
   data := reflect.New(dataType)
 
   rowsAffects := impl.fromTable().Find(&data, impl.WherePrimaryKey, id).RowsAffected
 
   if rowsAffects == 0 {
      return false
   }
 
   return true
}

随后检查,该模块可以正常使用。

如果大家想了解我们在EasyNVR上的实现过程,可以阅读此文:EasyNVR使用sqlite3如何判断一个表是否在数据库中已经存在。关于其他TSINGSEE青犀视频流媒体服务器的相关解决方案,欢迎访问TSINGSEE青犀视频官方网站。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
非对称加密的RSA算法如何通过golang来实现?
上一篇文章我们讲了golang实现AES的方式,这里我们来讲一下RSA算法如何通过golang实现。需要注意的是rsa本身不支持大文件的加密,我们需要分段切割进行加解密。下面我们来看下代码。
公众号-利志分享
2022/04/25
6320
知识分享之Golang——用于在Golang中的加解密工具类,包含MD5、RSA超长字符串、CBC、ECB等算法
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。
cn華少
2022/05/13
1.1K0
encoding/pem
pem包实现了PEM数据编码(源自保密增强邮件协议)。目前PEM编码主要用于TLS密钥和证书
酷走天涯
2019/06/11
9050
encoding/pem
Golang RSA 生成密钥、加密、解密、签名与验签
RSA 是最常用的非对称加密算法,由 Ron Rivest、Adi Shamir、Leonard Adleman 于1977 年在麻省理工学院工作时提出,RSA 是三者姓氏首字母的拼接。
恋喵大鲤鱼
2023/10/12
2.5K0
Golang RSA 生成密钥、加密、解密、签名与验签
Go 加密解密算法总结
加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式”和”数字签名“。
孤烟
2020/09/27
3K0
Golang:加密解密算法
在项目开发过程中,当操作一些用户的隐私信息,诸如密码,帐户密钥等数据时,往往需要加密后可以在网上传输.这时,需要一些高效地,简单易用的加密算法加密数据,然后把加密后的数据存入数据库或进行其他操作;当需要读取数据时,把加密后的数据取出来,再通过算法解密.
OwenZhang
2021/12/08
1.8K0
Golang:加密解密算法
Golang与非对称加密
DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到,但是其缺点就是只能用于数字签名,不能用于加密
仙人技术
2021/12/31
1.2K0
Golang与非对称加密
RSA 加密算法与 golang 代码实现
最近参与借贷业务的开发,接口传输过程中需要使用 RSA 加密算法对请求和返回进行加密,所以写了这篇博客。主要介绍 RSA 的基础知识和 golang 使用例子
_春华秋实
2023/11/27
4870
golang实现RSA2的签名与验签函数
使用非对称加密算法,实现签名与验签 package tools import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "crypto/x509" "encoding/base64" "encoding/pem" "errors" ) // RSA2私钥签名 func Rsa2PriSign(signContent string, privateKey string, ha
唯一Chat
2022/11/12
1.3K0
golang实现RSA2的签名与验签函数
RSA加密解密(无数据大小限制,php、go、java互通实现)
RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题。明文长度需要小于密钥长度,而密文长度则等于密钥长度。因此当加密内容长度大于密钥长度时,有效的RSA加解密就需要对内容进行分段。
双鬼带单
2019/07/30
5K0
Go加密算法总结
它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。本文也对Base64编码方式做了简要介绍。
iginkgo18
2020/12/22
1.7K0
分享几个 Go 语言中使用 RSA 算法对字符串的加密解密的代码片段
使用随机数据生成器random生成一对具有指定字位数的RSA密钥,生成 RSA 的公钥和私钥,并保存至 key 目录中,入参为加密的位数。
耕耘实录
2023/12/19
4060
【优化记录】RTSP协议视频智能分析平台EasyNVR登录及页面的加密优化方案介绍
大家知道任何平台,其安全性都是至关重要的,出现的任何漏洞都有可能导致文件的丢失或者不法分子的侵入。因此为了强化TSINGSEE青犀视频云边端平台的安全性,我们在EasyNVR上对用户名密码及页面的传输进行了新的加密。
EasyNVR
2020/12/22
4160
【优化记录】RTSP协议视频智能分析平台EasyNVR登录及页面的加密优化方案介绍
golang :rsa加密
golang的 rsa加密可以参考如下func Sign(pk, context string) string { block, _ := pem.Decode([]byte(pk)) if block == nil { panic("私钥错误") } private, err := x509.ParsePKCS1PrivateKey(block.Bytes) if err != nil { panic("PrivateKey error")
IT工作者
2022/07/06
1.3K0
主流加密方式
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),对称加密
酷走天涯
2019/05/26
1.3K0
go: 如何分区x509.ParsePKCS1PrivateKey和x509.ParsePKCS8PrivateKey
在Go开发中,处理私钥的常见场景涉及到解析PEM格式的私钥文件。这通常涉及到两种私钥格式:PKCS#1 和 PKCS#8。根据私钥的实际格式,我们会使用x509.ParsePKCS1PrivateKey函数来解析PKCS#1格式的私钥,或使用x509.ParsePKCS8PrivateKey函数来解析PKCS#8格式的私钥。
运维开发王义杰
2024/02/28
6580
go: 如何分区x509.ParsePKCS1PrivateKey和x509.ParsePKCS8PrivateKey
Golang面向对象编程之继承&虚基类【组合&接口】
Golang里面没有像C++一样有继承相关的概念,但是我们却可以实现继承相关的用法,这就要用到struct、interface这两个结构。
Allen.Wu
2019/12/12
1.9K0
Go语言中的加解密利器:go-crypto库全解析
文章链接:https://cloud.tencent.com/developer/article/2470390
南山竹
2024/11/25
2650
Go语言中的加解密利器:go-crypto库全解析
生成CSR和自签名证书
CSR,全称Certificate Signing Request(证书签发请求),是一种包含了公钥和与主题(通常是实体的信息,如个人或组织)相关的其他信息的数据结构。CSR通常用于向证书颁发机构(Certificate Authority,CA)申请数字证书。下面是CSR的详细介绍:
孟斯特
2023/10/25
7320
生成CSR和自签名证书
了解主流加密方式:离散、对称与非对称加密算法
尊敬的读者们,大家好!今天我将为大家介绍计算机加密领域中主流的加密方式,帮助您更好地理解加密算法。我们将重点探讨离散加密、对称加密以及非对称加密算法,并以Go语言为示例进行说明。让我们一起深入了解这些关键的加密技术!
运维开发王义杰
2023/08/10
4690
了解主流加密方式:离散、对称与非对称加密算法
推荐阅读
相关推荐
非对称加密的RSA算法如何通过golang来实现?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档