当初始化项目的时候,之前需要手动导入数据库sql文件,现在可以直接在命令行参数里输入go-fly install,就可以把数据库文件导进去了
读入sql文件后把字符串按照分号分隔,转成[]string ,然后再循环执行
func install(){ sqlFile:=config.Dir+"go-fly.sql" isExit,_:=tools.IsFileExist(config.MysqLConf) dataExit,1)">tools.IsFileExist(sqlFile) if !isExit||!dataExit{ fmt.Println(config/MysqL.json 数据库配置文件或者数据库文件go-fly.sql不存在) os.Exit(1) } sqls,1)">IoUtil.ReadFile(sqlFile) sqlArr:=strings.Split(string(sqls),;) for _,sql:=range sqlArr{ if sql==""{ continue } models.Execute(sql) } }
package models import ( fmt" github.com/jinzhu/gormgithub.com/taoshihan1991/imaptool/configtime ) 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:indexdeleted_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(MysqLtrue) DB.LogMode() DB.DB().SetMaxIdleConns(10) DB.DB().SetMaxOpenConns(100) } func Execute(sql string){ DB.Exec(sql) } func CloseDB() { defer DB.Close() }
简化的逻辑就是gorm open以后得到的实例执行一下Exec方法,执行sql语句
执行完成以后的效果: