美文网首页
go语言连接数据库,每次重新连接进行insert测试脚本

go语言连接数据库,每次重新连接进行insert测试脚本

作者: halleyshx | 来源:发表于2019-10-30 16:06 被阅读0次
package main

import (
    "database/sql"
    "flag"
    "fmt"
    "time"

    //导入mysql的驱动
    _ "github.com/go-sql-driver/mysql"
)
func main(){
    /*
       定义变量接收控制台参数
    */

    // 用户
    var username string
    // 密码
    var password string
    // 主机名
    var host string
    // 端口号
    var port int
    // 运行次数
    var totalrun int
    // 请求间隔时间(s)
    var sleeptime float64
    // 建库建表语句
    var createDB_TABLE string
    var content = `create database IF NOT EXISTS shxtest;
    CREATE TABLE IF NOT EXISTS shxtest.user (
        user_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户编号',
    user_name VARCHAR(45) NOT NULL COMMENT '用户名称',
    user_age TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户年龄',
    user_sex TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户性别',
    PRIMARY KEY (user_id))
    ENGINE = InnoDB
    AUTO_INCREMENT = 1
    DEFAULT CHARACTER SET = utf8
    COLLATE = utf8_general_ci
    COMMENT = '用户表';`

    // StringVar用指定的名称、控制台参数项目、默认值、使用信息注册一个string类型flag,并将flag的值保存到p指向的变量
    flag.StringVar(&username, "u", "", "用户名,默认为空")
    flag.StringVar(&password, "p", "", "密码,默认为空")
    flag.StringVar(&host, "h", "127.0.0.1", "主机名,默认 127.0.0.1")
    flag.IntVar(&port, "P", 3306, "端口号,默认为3306")
    flag.IntVar(&totalrun, "cts", 1,"执行次数,默认为1")
    flag.Float64Var(&sleeptime, "slpt", 1000, "请求间隔时间ms,默认为1000ms")
    flag.String(createDB_TABLE, content,"需提前创建shxtest库和user表,如语句")

    // 从arguments中解析注册的flag。必须在所有flag都注册好而未访问其值时执行。未注册却使用flag -help时,会返回ErrHelp。
    flag.Parse()

    // 打印
    fmt.Println("username=%v password=%v host=%v port=%v totalrun=%v sleeptime=%v", username, password, host, port, totalrun, sleeptime)
    runinsert(username,password,host,port,totalrun,sleeptime)
    fmt.Println("The end!")
}


func runinsert(username string,password string,host string,port int,totalrun int,sleeptime float64){
    var i = 1
    var constring = ""
    for i <= totalrun {
        constring = fmt.Sprintf("%s:%s@tcp(%s:%d)/shxtest?charset=utf8",username,password,host,port)
        fmt.Println(constring)
        //使用database/sql包中的Open连接数据库
        db,err := sql.Open("mysql",constring)
        if err != nil {
            fmt.Println("连接数据库失败:",err)
            return
        }
        //使用DB结构体实例方法Prepare预处理插入,Prepare会返回一个stmt对象
        stmt,err := db.Prepare("insert into `user`(user_name,user_age,user_sex)values(?,?,?)")
        if err!=nil{
            fmt.Println("预处理失败:",err)
            return
        }
        //使用Stmt对象执行预处理参数
        result,err := stmt.Exec("pengjin",i,1)
        if err!=nil{
            fmt.Println("执行预处理失败:",err)
            return
        }else{
            rows,_ := result.RowsAffected()
            fmt.Println("执行成功,影响行数",rows,"行" )
        }
        stmt.Close()
        db.Close()
        time.Sleep(time.Duration(sleeptime * 10e5))
        i++
    }
}

/*
create database IF NOT EXISTS shxtest;
CREATE TABLE IF NOT EXISTS `shxtest`.`user` (
`user_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户编号',
`user_name` VARCHAR(45) NOT NULL COMMENT '用户名称',
`user_age` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户年龄',
`user_sex` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户性别',
PRIMARY KEY (`user_id`))
ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
COMMENT = '用户表';*/

可以把return注释掉来进行异常情况错误抛出,继续往下执行

相关文章

  • go语言连接数据库,每次重新连接进行insert测试脚本

    可以把return注释掉来进行异常情况错误抛出,继续往下执行

  • Dbeaver设置

    DBeaver挺好用,就是每次都需要重新连接数据库,如何设置,避免每次都重新连接数据库呢? 应用后,就能秒连接数据...

  • 2019-05-17

    连接mysql github.com/go-sql-driver/mysql 引入包 连接 添加 insert i...

  • Mysql

    mysql 基础语法 // 数据库 表 insert select update delete 连接查询 内连接:...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • golang 操作mysql

    1 数据库表 2 连接数据库 mysql.go 3 增删改查 user.go 4 入口调用测试 main.go 最...

  • Python接口自动化核心模块 - 数据库操作和日志

    进行接口测试时,我们需要连接到数据库中,对数据源进行备份、还原、验证等操作。 Python连接数据库常见模块 My...

  • Python连接Oracle 12c数据库

    Python运行速度比较慢,还是不太适合编写脚本进行大量的数据库连接压力测试。比较适合多种类型的测试验证。我也就是...

  • LabVIEW连接MySQL以及SQLite数据库

    以前笔者在LabVIEW连接MySQL时,直接使用连接字符串来连接数据库进行操作,但是重新换了个系统后,发现连...

  • Golang数据库操作增删改查

    go 连接mysql进行数据库操作 导入包,导入github那个驱动包是因为go本地的数据库操作需要用到那个驱动 ...

网友评论

      本文标题:go语言连接数据库,每次重新连接进行insert测试脚本

      本文链接:https://www.haomeiwen.com/subject/qpaovctx.html