zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

javaer to go之mysql操作

mysqlGo 操作 to
2023-09-14 08:57:15 时间
div >经过度娘后,发现比较常用golang mysql驱动包有两种mymysql和go-sql-driver/mysql。个人觉得mymysql这个名字起得不够文雅。所以我选择了go-sql-driver/mysql。

1、go-sql-driver/mysql的安装

因为go-sql-driver/mysql属于第三方的包,所以我们需要先获取到这个包。

通过系统的shell工具(命令行),把安装包加到我们的$GOPATH。

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

这里要注意的是:使用上面的命令不单要配置好Golang的环境,还需要把git的bin目录配置到Path环境变量中。


因为我们使用过程中,并没有直接使用到go-sql-driver/mysql,而是通过database/sql中的接口来使用驱动,这点和java的思想是一样的。所以我们在导入go-sql-driver/mysql包的时候,通过下划线作为占位符,告诉golang不会直接使用此包的内容。

注:


如果你导入了一个包却没有使用它,则会在构建程序时引发错误,如 imported and not used: os,这正是遵循了 Go 的格言:“没有不必要的代码!“。

变量的声明也一样,你如果声明了一个变量,却没有使用这个变量,也会引发错误。

占位符的存在,解决了你既要导入这个包,但又不会显式使用包的问题。


stmt, err := db.Prepare(`INSERT user (user_name,user_age,user_sex) values (?,?,?)`)

checkErr(err)

res, err := stmt.Exec("tony", 20, 1)

checkErr(err)

id, err := res.LastInsertId()

checkErr(err)

修改:


stmt, err := db.Prepare(`UPDATE user SET user_age=?,user_sex=? WHERE user_id=?`)

checkErr(err)

res, err := stmt.Exec(21, 2, 1)

checkErr(err)

num, err := res.RowsAffected()

checkErr(err)

删除:


Go 语言入门很简单:如何在 Go 语言中使用 MySQL MySQL 是一个基于结构化查询语言(SQL)的开源关系数据库管理系统。它是一种关系数据库,可将数据组织到一个或多个表中,其中数据相互关联。MySQL 是行业领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。
Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang。众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇。Java 版 Seata AT 模式通过对 DataSource 数据源进行代理,在 sql 语句执行时,对 sql 拦截解析,获取数据库对应数据在 sql 语句执行前后的副本,序列化后保存起来,在 TC 协调回滚时用来回滚对应数据。实现 go 版本 client 的 AT 模式时,怎样对业务开发者更友好,入侵更少,成了首要考虑的目标。