go-mysql

记录一下使用mysql来处理db相关操作。

连接db

package main

import (
    "database/sql"

    "github.com/go-sql-driver/mysql"
    "github.com/sirupsen/logrus"
)

func connMysql() bool {
    cfg := &mysql.Config{}
    cfg.Net = "tcp"
    cfg.Addr = "127.0.0.1"
    cfg.DBName = "test"
    cfg.User = "root"
    cfg.Passwd = "root"
    cfg.AllowNativePasswords = true
    dns := cfg.FormatDSN()
    logrus.Debugf("connMysql %v", dns)
    _, err := sql.Open("mysql", dns)
    if err != nil {
        logrus.Fatalf("connMysql open fail")
        return false
    }
    logrus.Debugf("connMysql open success")
    return true
}

func main() {
    connMysql()
}

添加测试表

CREATE TABLE IF NOT EXISTS `tbl_test` (
  `id`          INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
  `user`        VARCHAR(50) NOT NULL COMMENT '用户ID' UNIQUE KEY,
  `ts`          INT(10) UNSIGNED NOT NULL COMMENT '时间戳',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

增查改

    insForm, perErr := db.Prepare("INSERT INTO tbl_test(user, ts) VALUES(?,?)")
    if perErr != nil {
        panic(err.Error())
    }
    t := time.Now()
    secs := t.Unix()
    insResult, insErr := insForm.Exec("abel", secs)
    if insErr != nil {
        panic(insErr.Error())
    }
    insRow, insErr := insResult.RowsAffected()
    if insErr != nil {
        panic(insErr.Error())
    }
    logrus.Infof("RowsAffected %v", insRow)

    selDB, selErr := db.Query("SELECT * FROM tbl_test WHERE user='abel'")
    if selErr != nil {
        panic(selErr.Error())
    }

    for selDB.Next() {
        var name string
        var id, ts int
        err = selDB.Scan(&id, &name, &ts)
        if err != nil {
            panic(err.Error())
        }
        logrus.Infof("row info name: %v, ts: %v", name, ts)
    }

    updateForm, upErr := db.Prepare("update tbl_test set ts=? where user=?")
    if upErr != nil {
        panic(upErr.Error())
    }
    t := time.Now()
    secs := t.Unix()
    upResult, rErr := updateForm.Exec(secs, "abel")
    if rErr != nil {
        panic(rErr)
    }
    num, _ := upResult.RowsAffected()
    logrus.Infof("update RowsAffected %v", num)

引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值