首页 > 其他分享 >Go的ORM安装使用

Go的ORM安装使用

时间:2022-11-14 17:34:19浏览次数:36  
标签:Println string err fmt go ORM Go apath 安装

源码开发

        

 安装包管理第三方模块

 go env -w GO111MODULE=on
 go mod init goweb
 go mod tidy
 go run main.go
初始化go项目步骤

          go env -w GO111MODULE=on

            

          go mod init goweb     自动在当前目录创建go.mod文件   goweb是设置本项目的包名,可以自定义任何名称.外部项目导入本项目的时候需要用的就是这个包名

            

          go mod tidy   自动下载本项目中所有用到的被依赖的第三方包。同时修改go.mod的内容并创建go.sum文件

            

            

 grom的使用

package main

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "fmt"
)

type Userinfo struct {
    Id     uint
    Name   string
    Gender string
    Hobby  string
}

func main() {
    // 连接数据库
    dsn := "root:aaaa@tcp(192.168.2.191:6306)/db1?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }

    //add(db)
    ListUser(db)
}

func add(db *gorm.DB) {

    //自动迁移
    db.AutoMigrate(&Userinfo{})
    u1 := Userinfo{Id: 3, Name: "张三222", Gender: "男", Hobby: "学习"}
    db.Create(&u1) //创建
}

func ListUser(db *gorm.DB) {
    var users []Userinfo
    db.Find(&users)
    for _,user := range users {
      fmt.Println(user)
      fmt.Println(user.Name)
    }
}
数据库操作实例

    

 

Go读取Redis

[Redis]
IpHost = "192.168.30.252:6379"
Password = "Admin"
KeyName = "ProbeService"
config.toml
package utils

import (
    "github.com/BurntSushi/toml"
)

var (
    ConfPath string
    // Conf global
    Conf = &Config{}
)

// Config .
type Config struct {
    Redis *Redis
}

type Redis struct {
    IpHost   string
    Password string
    KeyName   string
}


func CfgInit() (err error) {
    _, err = toml.DecodeFile(ConfPath, &Conf)
    return
}
conf.go
package mynmap

import (
    "fmt"
    "yxh/scan/utils"
    "github.com/go-redis/redis"
)


func (N *NmapProbe)RedisInit(){
  apath, _:=os.Getwd()
  var cfgfile string
  
  if strings.Index(apath,"\\") > 0{
    cfgfile = apath+"\\file\\config.toml"
   } else {
    cfgfile = apath+"/file/config.toml"
   }
   

  utils.ConfPath = cfgfile
   if err := utils.CfgInit(); err != nil {
      fmt.Println("utils.CfgInit() err:%+v", err)
   }
   redisConf := utils.Conf.Redis
   //fmt.Println(redisConf.KeyName)


  client := redis.NewClient(&redis.Options{
     Addr:        redisConf.IpHost,
     Password:    redisConf.Password,
     DB:            0,
 })

 ProbesInfo, _ := client.Get(redisConf.KeyName).Result()
 //fmt.Println(ProbesInfo)

 N.parseProbesFromContent(&ProbesInfo)
 N.parseProbesToMapKName()

 defer client.Close()    
}

func (N *NmapProbe)FileInit(){
    apath, _:=os.Getwd()
    //var nmapfile string
    var portfile string
  
    
    if strings.Index(apath,"\\") > 0{
         //windows
         //nmapfile = apath+"\\file\\nmap.txt"
         portfile = apath+"\\file\\port.txt"
    } else {
        //linux os
        //nmapfile = apath+"/file/nmap.txt"
        portfile = apath+"/file/port.txt"
    }

        //statikFS, err := fs.New()  
    //statikFS压缩后每次都必须要重新build main.go
    //改成由os直接读取磁盘文件,直接修改文件即可立即生效

    /*
    filecon1, err := os.Open(nmapfile)
    if err != nil {
        fmt.Println("[-] 静态资源FS初始化失败:%s", err.Error())
    }
    defer filecon1.Close()

    nmapContents, err := ioutil.ReadAll(filecon1)
    if err != nil{
        fmt.Println("[-] 加载Nmap协议失败:%s", err.Error())
    }
    */

    filecon2, err := os.Open(portfile)
    if err != nil{
        fmt.Println("[-] 加载端口数据失败:%s\n", err.Error())
    }
    defer filecon2.Close()
    nmapContentsPort, err := ioutil.ReadAll(filecon2)
    if err != nil{
        fmt.Println("[-] 加载端口数据失败:%s\n", err.Error())
    }
     
    //strdata := string(nmapContents)
    //N.parseProbesFromContent(&strdata)  // 解析nmap指纹库,读取nmap.txt
    //N.parseProbesToMapKName()
    N.ServiceParse(nmapContentsPort) // 解析端口对应协议数据,读取ports.txt

}
// nmap指纹库初始化
func (N *NmapProbe)Init(){
     N.RedisInit()
     N.FileInit()
}
nmap.go

  

 

标签:Println,string,err,fmt,go,ORM,Go,apath,安装
From: https://www.cnblogs.com/yxh168/p/16771442.html

相关文章

  • 4.go中的变量
    1.变量表示内存中的一个存储区域2.该区域有自己的名称(变量名)和类型(数据类型)3.使用的三种方式 指定变量类型,声明后若不赋值,使用默认值根据值自行判定变量类型(类型推导......
  • Mongodb集群搭建
    mongodb的集群搭建方式主要有三种,主从模式,Replicaset模式,sharding模式,三种模式各有优劣,适用于不同的场合,属Replicaset应用最为广泛,主从模式现在用的较少,sharding模式最......
  • Go语言的一些资料汇总
    1. ​​8分钟了解你为什么应该学习Go语言 ​​​​https://www.bilibili.com/video/av45561733/​​2.​​手把手教你从零开始搭建Go语言开发环境​​​​https:/......
  • Golang写时复制是否是原子性的?
    建议先阅读下Go汇编语言的入门教程​​​https://go.dev/doc/asm​​先说一下我这边的一个简化场景吧,有一个定时任务定时从数据库获取数据,也就是对应实例代码中的getNewPro......
  • 给 Go 库作者的建议
    视频信息PracticalAdviceforGoLibraryAuthorsbyJackLindamoodatGopherCon2016​​https://www.youtube.com/watch?v=5v2fqm_8jYI​​幻灯地址:​​​http://go-talk......
  • 37、记录使用 Swin Transformer主干网络去实现分类,并转化NCNN、TNN、MNN模型以及部署
    基本思想:最近手中有个swimtransformer模型,想移植手机端进行推理一下,随手记录一下遇到的问题涉及简单的转ncnntnnmnn的流程性问题一、首先我fork了大佬的代码​​https:/......
  • GORMACS如何使用?一个方法快速完成动力学模拟计算
    GROMACS是一个功能强大的分子动力学的模拟软件,其在模拟大量分子系统的牛顿运动方面具有极大的优势。它可以用分子动力学、随机动力学或者路径积分方法模拟溶液或晶体中的任......
  • Python用yield form 实现异步协程爬虫
    很古老的用法了,现在大多用的aiohttp库实现,这篇记录仅仅用做个人的协程底层实现的学习。争取用看得懂的字来描述问题。1.什么是yield如果还没有怎么用过的话,直接把yield......
  • Nginx(概念,安装/升级,配置解析,SSL的安装)
    目录:1.1nginx与apache差异1.2应用场景 2.1编译安装nginx2.2升级nginx2.3添加nginx系统服务 3.nginx配置文件3.2访问状态统计配置 4.1基于授权的访问控制4.2......
  • Canal安装配置(消息队列类型:RabbitMQ)
    1.Mysql配置canal支持源端MySQL版本包括5.1.x,5.5.x,5.6.x,5.7.x,8.0.x1.1.查看mysqlbinlog是否开启:SHOWVARIABLESLIKE'log_bin' ON标识开启,如果m......