前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过go操作MySQL

通过go操作MySQL

作者头像
jeanron100
发布2018-09-29 15:08:48
1.2K0
发布2018-09-29 15:08:48
举报

这是学习笔记的第 1733 篇文章

一直要做MySQL方向的一些数据管理定制工作,go就是一个很不错的切入点,拖来拖去,决定还是从一些小的地方开始慢慢切入。

go和MySQL方向的直接切合点就是通过go来操作MySQL了。

有什么好的驱动呢?除了标准库的,目前我知道有两个。jmoiron和go-sql-driver。

对于评分控来说,一看star就能看出门道来。

两者的协议不同,版本规模go-sql-driver略多一些,本次的初步对接是使用go-sql-driver来实现的,比较有意思的是,这个是go-sql-driver的一个logo,这只囊地鼠开始和海豚一起愉快的玩耍了。

我们假设一个场景,在一个表里插入数据,然后根据键值查取相应的值。

创建的表为user,

mysql> create table user(id int not null primary key auto_increment,username varchar(30),password varchar(64));

Query OK, 0 rows affected (0.12 sec)

然后下载相应的驱动包。

go get github.com/go-sql-driver/mysql

使用如下的代码来完成初步的对接。

package main

import (

"database/sql"

_ "github.com/go-sql-driver/mysql"

"log"

)

func insert(db *sql.DB) {

stmt, err := db.Prepare("INSERT INTO user(username, password) VALUES(?, ?)")

defer stmt.Close()

if err != nil {

log.Println(err)

return

}

stmt.Exec("jeanron", "test100")

stmt.Exec("jianrong", "testabc")

}

func main() {

db, err := sql.Open("mysql", "root:test@tcp(127.0.0.1:3306)/testdb?charset=utf8")

log.Println(db)

if err != nil {

log.Fatalf("Open database error: %s\n", err)

}

defer db.Close()

err = db.Ping()

log.Println(err)

if err != nil {

log.Fatal(err)

}

insert(db)

rows, err := db.Query("select id, username from user where id = ?", 1)

if err != nil {

log.Println(err)

}

defer rows.Close()

var id int

var name string

for rows.Next() {

err := rows.Scan(&id, &name)

if err != nil {

log.Fatal(err)

}

log.Println(id, name)

}

err = rows.Err()

if err != nil {

log.Fatal(err)

}

}

其中数据库连接的方式是一个重点:

连接串使用如下的规则来建立连接:

用户名:密码@协议(地址:端口)/数据库?参数=参数值

对应的代码为:

db, err := sql.Open("mysql", "root:xxxx@tcp(127.0.0.1:3306)/testdb?charset=utf8")

为了跟进执行过程中的日志细节,我加了几个debug的日志打印,可以看到整个执行的流程情况。

脚本执行的结果如下:

# go run test.go

2018/09/03 23:49:05 &{{root:jjmatch@tcp(127.0.0.1:3306)/testdb?charset=utf8 0x745188} 0 {0 0} [] map[] 0 0 0xc420070120 0xc420064060 false map[] map[] 0 0 0 <nil> 0x4aeea0}

2018/09/03 23:49:05 <nil>

2018/09/03 23:49:05 1 jeanron

通过这样一段简短的代码,可以很快的掌握go语言的特性,如果对Java和Python比较熟悉,写起来就很快了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档