gomysql

module
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 4, 2020 License: Apache-2.0

README

mysql

Build Status Go Report Card LICENSE Godoc

使用CircleCI进程CI Pipeline校验,Go Report Card进行Golang项目代码分析

  1. CircleCI: https://circleci.com/gh/chenguolin/gomysql/tree/master
  2. Go Report Card: https://goreportcard.com/report/github.com/chenguolin/gomysql

golang mysql 封装支出主从服务, 读取默认情况使用slave,写入默认情况使用master。 用户可以指定是否需要从master读取,调用Mysql.Master()函数即可保证从主库读取。

sample

open db

conf := &mysql.Config{}
conf.SetMaster("127.0.0.1")
conf.SetSlaves([]string{"127.0.0.1", "127.0.0.1"})
conf.SetPort(3306)
conf.SetUserName("root")
conf.SetPassword("root")
conf.SetDBName("test")
conf.SetMaxOpenConnCount(1000)
conf.SetMaxIdleConnCount(500)
conf.SetConnWaitTimeMs(5000)
conf.SetConnIdleTimeMs(21600000)
conf.SetConnTimeoutMs(5000)
conf.SetWriteTimeoutMs(5000)
conf.SetReadTimeoutMs(5000)

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(err)
}
defer dbProxy.Close()

create database

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

// create database
sql := string("create database sample_db")
res, err := dbProxy.Exec(sql)
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Exec error:%s", err.Error()))
}
fmt.Println(res)

create table

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

// create table
sql := string("create table sample_table (id int, name varchar(255))")
res, err := dbProxy.Exec(sql)
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Exec error:%s", err.Error()))
}
fmt.Println(res)

sql insert

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

args := []interface{}{
    time.Now().Unix(),
"cgl",
}

res, err := dbProxy.Exec("insert into sample_table (id, name) values (?, ?)", args...)
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Exec insert error:%s", err.Error()))
}
fmt.Println(res.LastInsertId())
fmt.Println(res.RowsAffected())

sql select

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

rows, err := dbProxy.Query("select * from sample_table")
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Query select error:%s", err.Error()))
}

// scan
defer rows.Close()
for rows.Next() {
    var id int
	var name string
	err := rows.Scan(&id, &name)
	if err != nil {
	    fmt.Println(fmt.Sprintf("rows.Scan error:%s", err.Error()))
	}
	fmt.Println(id, name)
}

sql update

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

// update
res, err := dbProxy.Exec("update sample_table set id = 1 where name = 'cgl'")
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Exec update error:%s", err.Error()))
}
fmt.Println(res.RowsAffected())
fmt.Println(res.LastInsertId())

sql delete

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

// delete
res, err := dbProxy.Exec("delete from sample_table where id = 1")
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Exec delete error:%s", err.Error()))
}
fmt.Println(res.RowsAffected())
fmt.Println(res.LastInsertId())

sql tx

dbProxy, err := mysql.NewMysql(conf)
if err != nil {
    fmt.Println(fmt.Sprintf("NewMysql error:%s", err.Error()))
}
defer dbProxy.Close()

// begin
tx, err := dbProxy.Begin()
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy begin error:%s", err.Error()))
}

// sql
args := []interface{}{
    time.Now().Unix(),
	"cgl",
}

res, err := dbProxy.Exec("insert into sample_table (id, name) values (?, ?)", args...)
if err != nil {
    fmt.Println(fmt.Sprintf("dbProxy.Exec insert error:%s", err.Error()))
}
fmt.Println(res.RowsAffected())
fmt.Println(res.LastInsertId())

// commit
err = tx.Commit()

// err rollback
if err != nil {
    tx.Rollback()
}

CI Workflow Check

  1. gocyclo: 校验代码复杂度
  2. gofmt: 校验代码是否都已经格式化
  3. golint: 校验代码风格规范是否按照指定标准
  4. gosimple: 校验代码是否可以简化
  5. govet: 代码静态校验
  6. misspell: 校验是否有英文单词拼写错误
  7. unused: 校验是否有未使用变量、常量、函数、结构体等
  8. gotest: 单元测试校验

Gitlab CI

如果使用Gitlab,也可以通过.gitlab-ci.yml运行Gitlab CI Pipeline,详细介绍请参考下面2篇文章

  1. Gitlab 安装使用
  2. Gitlab CI和CD配置

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL