小言_互联网的博客

RTSP/GB28181/Ehome协议安防视频服务平台EasyCVR使用golang orm操作数据库及基本使用步骤

699人阅读  评论(0)

关于TSINGSEE青犀视频云边端架构中安防视频云服务EasyCVR的开发过程,我们分享了很多实用技能,大家可以参考。

上篇提到数据库执行耗时长导致页面刷新慢影响客户使用体验的问题(EasyCVR页面刷新慢应该如何优化),这里来看看EasyCVR是怎么操作数据库的。

首先golang层对数据进行了封装,也就是ORM(Object Relation Mapping),对象关系映射,实际上就是对数据库的操作进行封装,对上层开发人员屏蔽数据操作的细节,开发人员看到的就是一个个对象,大大简化了开发工作,提高了生产效率。下面看下实用步骤。

1、库安装

go get -u github.com/jinzhu/gorm

2、数据库初始化


  
  1. func Init() (err error) {
  2. gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTablename string) string {
  3. return "t_" + defaultTablename
  4. }
  5. dbFile := utils.DBFile()
  6. log.Printf( "init db model.%s", utils.DBFile())
  7. database, err = gorm.Open( "sqlite3", fmt.Sprintf( "%s?loc=Asia/Shanghai", dbFile))
  8. if err != nil {
  9. return
  10. }
  11. // Sqlite cannot handle concurrent writes, so we limit sqlite to one connection.
  12. // see https://github.com/mattn/go-sqlite3/issues/274
  13. database.DB().SetMaxOpenConns( 30)
  14. database.DB().SetMaxIdleConns( 30)
  15. database.SetLogger(utils.DefaultGormLogger)
  16. database.LogMode( false)
  17. // 自动创建新的表格、表格字段、删除的字段不会删除
  18. database.AutoMigrate(cvrdo.User{}, cvrdo.Device{}, cvrdo.DBChannelInfo{}, cvrdo.RecordCompt{}, cvrdo.DBChannelInfoErrMsg{})

3、表创建,增删改查,事务
特别说明下事务操作,基本流程为 Begin -> 增删改查->Commit,数据库事务操作能减少频繁的进行数据库读写操作,这是它的优点,但是使用事务时需要注意有可能导致数据库锁死。

新建数据:

删除数据:

更新数据:


转载:https://blog.csdn.net/TsingSee/article/details/109642229
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场