专栏首页陶士涵的菜地[Go]GO语言实战-GO-FLY在线客服gorm导入sql文件

[Go]GO语言实战-GO-FLY在线客服gorm导入sql文件

当初始化项目的时候,之前需要手动导入数据库sql文件,现在可以直接在命令行参数里输入go-fly install ,就可以把数据库文件导进去了

实现方式就是使用gorm执行sql文件里面的每行sql语句

读入sql文件后把字符串按照分号分隔,转成[]string ,然后再循环执行

实例代码是(自行更改文件目录):

func install(){
    sqlFile:=config.Dir+"go-fly.sql"
    isExit,_:=tools.IsFileExist(config.MysqlConf)
    dataExit,_:=tools.IsFileExist(sqlFile)
    if !isExit||!dataExit{
        fmt.Println("config/mysql.json 数据库配置文件或者数据库文件go-fly.sql不存在")
        os.Exit(1)
    }
    sqls,_:=ioutil.ReadFile(sqlFile)
    sqlArr:=strings.Split(string(sqls),";")
    for _,sql:=range sqlArr{
        if sql==""{
            continue
        }
        models.Execute(sql)
    }
}

go-fly代码中数据库操作类

package models

import (
    "fmt"
    "github.com/jinzhu/gorm"
    "github.com/taoshihan1991/imaptool/config"
    "time"
)
var DB *gorm.DB
type Model struct {
    ID        uint `gorm:"primary_key" json:"id"`
    CreatedAt time.Time `json:"created_at"`
    UpdatedAt time.Time `json:"updated_at"`
    DeletedAt *time.Time `sql:"index" json:"deleted_at"`
}
func init(){
    mysql:=config.CreateMysql()
    dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Server, mysql.Port, mysql.Database)
    DB,_=gorm.Open("mysql",dsn)
    DB.SingularTable(true)
    DB.LogMode(true)
    DB.DB().SetMaxIdleConns(10)
    DB.DB().SetMaxOpenConns(100)
}
func Execute(sql string){
    DB.Exec(sql)
}
func CloseDB() {
    defer DB.Close()
}

简化的逻辑就是gorm open以后得到的实例执行一下Exec方法,执行sql语句

执行完成以后的效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • golang实现mysql连接池

    golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,...

    陶士涵
  • [nodejs] nodejs开发个人博客(四)数据模型

    陶士涵
  • [Linux] linux路由表

    路由表用于决定数据包从哪个网口发出,其主要判断依据是目标IP地址 Linux路由表其实有2个主要概念:按顺序走路由策略,在路由策略对应的路由表中匹配规则 路由策...

    陶士涵
  • pageadmin CMS 验证sql用户名和密码的正确性

    第一个箭头指向的就是服务器名称,如果用ip无法连接sql时候,可以用服务器名称来连接。

    Almost Lover
  • dba麻烦终结者之路

    或许你厌倦了朝五晚六的开发工作,开始考ocp;或许你刚走出象牙塔,立志在数据库管理方面大干一场?经过一翻努力,终于有了份dba的工作,忐忑不安地坐在电脑旁,激动...

    Tony老师
  • python实现一次性封装多条sql语句(begin end)

    因为业务需求,优化模型运行时间。考虑到sql语句每一次执行都要建立连接,查询,获取数据耗时过多。就想到将sql一起提交上去运行,能够节省很多时间。原本1.6-2...

    砸漏
  • Python sql注入 过滤字符串的非法字符实例

    以上这篇Python sql注入 过滤字符串的非法字符实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

    砸漏
  • SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

    用户1112962
  • 从python读取sql的实例方法

    以上就是从python读取sql的实例方法的详细内容,更多关于如何从python读取sql的资料请关注ZaLou.Cn其它相关文章!

    砸漏
  • flink教程-基于flink 1.11 使 sql客户端支持执行sql文件

    目前flink的sql客户端提供了一种交互式的sql查询服务,用户可以使用sql客户端执行一些sql的批任务或者流任务。但是当我想执行一些sql的定时任务时,f...

    大数据技术与应用实战

扫码关注云+社区

领取腾讯云代金券