RTSP/GB28181/Ehome协议安防视频服务平台EasyCVR使用golang orm操作数据库及基本使用步骤
2020-11-12 13:50
274 查看
关于TSINGSEE青犀视频云边端架构中安防视频云服务EasyCVR的开发过程,我们分享了很多实用技能,大家可以参考。
上篇提到数据库执行耗时长导致页面刷新慢影响客户使用体验的问题(EasyCVR页面刷新慢应该如何优化),这里来看看EasyCVR是怎么操作数据库的。
首先golang层对数据进行了封装,也就是ORM(Object Relation Mapping),对象关系映射,实际上就是对数据库的操作进行封装,对上层开发人员屏蔽数据操作的细节,开发人员看到的就是一个个对象,大大简化了开发工作,提高了生产效率。下面看下实用步骤。
1、库安装
go get -u github.com/jinzhu/gorm
2、数据库初始化
func Init() (err error) { gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTablename string) string { return "t_" + defaultTablename } dbFile := utils.DBFile() log.Printf("init db model.%s", utils.DBFile()) database, err = gorm.Open("sqlite3", fmt.Sprintf("%s?loc=Asia/Shanghai", dbFile)) if err != nil { return } // Sqlite cannot handle concurrent writes, so we limit sqlite to one connection. // see https://github.com/mattn/go-sqlite3/issues/274 database.DB().SetMaxOpenConns(30) database.DB().SetMaxIdleConns(30) database.SetLogger(utils.DefaultGormLogger) database.LogMode(false) // 自动创建新的表格、表格字段、删除的字段不会删除 database.AutoMigrate(cvrdo.User{}, cvrdo.Device{}, cvrdo.DBChannelInfo{}, cvrdo.RecordCompt{}, cvrdo.DBChannelInfoErrMsg{})
3、表创建,增删改查,事务
特别说明下事务操作,基本流程为 Begin -> 增删改查->Commit,数据库事务操作能减少频繁的进行数据库读写操作,这是它的优点,但是使用事务时需要注意有可能导致数据库锁死。
新建数据:
删除数据:
更新数据:
相关文章推荐
- MySQL的 安装、配置、卸载
- Redis基础—了解Redis是如何做数据持久化的
- 数据库软件架构,到底要设计些什么?
- 8 张图带你分析 Redis 与 MySQL 数据一致性问题
- mysql修改密码
- Navicat无法直连MySQL怎么办?
- 我C,MySQL双主架构,原来能这么玩
- 解密未来数据库设计:MongoDB新存储引擎WiredTiger实现(事务篇)
- 性能优化利器:剖析MySQL 5.7新特征 sys schema
- MongoDB 3.0挂起原因?WiredTiger实现:一个LRU cache深坑引发的分析
- Jumpserver高可用集群部署:(八)MariaDB及Redis数据库定时备份
- 分库分表的 4种分片策略,所有 SQL 都逃不掉的一步
- 并发环境下,先操作数据库还是先操作缓存?
- 《Django Web应用开发实战》学习笔记 5- 数据库连接配置
- MySQL中,21个写SQL的好习惯(修正版)
- MySQL数据库高危权限回收参考
- 《进大厂系列》系列-Redis缓存雪崩、击穿、穿透
- 《进大厂系列》系列-Redis双写一致性、并发竞争、线程模型
- Jumpserver高可用集群部署:(四)Redis 哨兵模式高可用部署
- Redis配置及攻击利用