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


    关于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,数据库事务操作能减少频繁的进行数据库读写操作,这是它的优点,但是使用事务时需要注意有可能导致数据库锁死。

    新建数据:

    删除数据:

    更新数据:

  • 相关阅读:
    如何使用sendEmail发送邮件
    Linux curl命令详解
    linux比较两个文件是否一样(linux命令md5sum使用方法)
    strace命令用法详解
    strace用法说明
    ORA-12154 TNS无法解析指定的连接标识符
    VNC远程连接阿里云Linux服务器 图形界面
    pycharm配置Git 代码管理
    FireFox浏览器-xpath快速定位插件:Xpath Checker
    odoo 前端模板引擎 Qweb
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14006441.html
Copyright © 2020-2023  润新知