• golang mysql 客户端


    ...

    使用mysql 客户端的正确姿势,解决一堆 3306 time_wait的问题

    package dbs
    
    import (
    	"database/sql"
    	"fmt"
    	"log"
    	"time"
    
    	_ "github.com/go-sql-driver/mysql"
    )
    
    var MysqlDb *sql.DB
    var MysqlDbErr error
    
    const (
    	USER_NAME = "root"
    	PASS_WORD = "123456"
    	HOST      = "localhost"
    	PORT      = "3306"
    	DATABASE  = "hudb"
    	CHARSET   = "utf8"
    )
    
    // 初始化链接
    func init() {
    
    	dbDSN := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", USER_NAME, PASS_WORD, HOST, PORT, DATABASE, CHARSET)
    
    	// 打开连接失败
    	MysqlDb, MysqlDbErr = sql.Open("mysql", dbDSN)
    	//defer MysqlDb.Close();
    	if MysqlDbErr != nil {
    		log.Println("dbDSN: " + dbDSN)
    		panic("数据源配置不正确: " + MysqlDbErr.Error())
    	}
    
    	// 最大连接数
    	MysqlDb.SetMaxOpenConns(100)
    	// 闲置连接数
    	MysqlDb.SetMaxIdleConns(20)
    	// 最大连接周期
    	MysqlDb.SetConnMaxLifetime(100 * time.Second)
    
    	if MysqlDbErr = MysqlDb.Ping(); nil != MysqlDbErr {
    		panic("数据库链接失败: " + MysqlDbErr.Error())
    	}
    
    }
    
    
    // 用户表结构体
    type User struct {
    	Id   int64  `db:"id"`
    	Name string `db:"name"`
    }
    
    // 查询数据,指定字段名
    func StructQueryField() {
    
    	user := new(User)
    	row := MysqlDb.QueryRow("select id, name from tb1 where id=?", 1)
    	if err := row.Scan(&user.Id, &user.Name); err != nil {
    		fmt.Printf("scan failed, err:%v", err)
    		return
    	}
    	fmt.Println(user.Id, user.Name)
    
    	MysqlDb.Close()
    	row1 := MysqlDb.QueryRow("select id, name from tb1 where id=?", 1)
    	if err := row1.Scan(&user.Id, &user.Name); err != nil {
    		fmt.Printf("scan failed, err:%v", err)
    		return
    	}
    	fmt.Println(user.Id, user.Name)
    
    }
    

      

  • 相关阅读:
    Python爬虫常用请求头User-Agent
    python使用清华镜像源安装工具包selenium,解决直接pip install安装慢的问题
    工于擅其事必先利其器-全家桶的激活
    user.vue
    Gateway流量的入口,API全托管,协议适配,防刷
    nacos配置服务2
    项目笔记
    sql性能优化
    windows脚本
    js时间格式化参考文档
  • 原文地址:https://www.cnblogs.com/eiguleo/p/15406696.html
Copyright © 2020-2023  润新知