golang操作mysql
1. 安装mysql驱动库和sqlx基于官方sql库的扩展库
go get github.com/go-sql-driver/mysql
go get github.com/jmoiron/sqlx
2. 链接mysql
package main import (
"fmt"
_ "github.com/go-sql-driver/mysql" // 初始化mysql驱动
"github.com/jmoiron/sqlx" // sqlx是一个库,为go标准库database/sql提供了一组扩展
) var db *sqlx.DB func init() {
// 初始化
database, err := sql.Open("mysql", "username:password@protocal(host:port)/db_name")
if err != nil {
fmt.Println("open mysql field", err)
return
} db = database
}
3. insert
func main() {
defer db.Close() result, err := db.Exec("insert into person(username, sex, email)values(?,?,?)", "abc", "男", "myn_cn@163.com")
if err != nil {
fmt.Println("Exec failed", err)
return
} lastId, err := result.LastInsertId()
if err != nil {
fmt.Println("exec failed", err)
return
} fmt.Println("insert success", lastId) }
4. select
type Person struct {
Userid int `db:"user_id"`
Username string `db:"username"`
Sex string `db:"sex"`
Email string `db:"email"`
} func main() {
defer db.Close() var person []Person
if err := db.Select(&person, "select user_id, username, sex, email from person where user_id = ?;", 2); err != nil {
fmt.Println("select failed", err)
return
} fmt.Println("select success", person) }
5. update
func main() {
result, err := db.Exec("update person set username = ? where user_id = ?", "嘿嘿2", 2)
if err != nil {
fmt.Println("exec failed", err)
return
} rows, err := result.RowsAffected()
if err != nil {
fmt.Println("exec failed", err)
} fmt.Println("update success", rows) }
6. delete
func main() {
result, err := db.Exec("delete from person where user_id = ?", 2)
if err != nil {
fmt.Println("exec failed", err)
return
} rows, err := result.RowsAffected()
if err != nil {
fmt.Println("exec failed", err)
} fmt.Println("delete success", rows) }
7. mysql事务
func main() {
conn, err := db.Begin() // 开启事务 if err != nil {
fmt.Println("begin err", err)
return
} result, err := conn.Exec("insert into person(username, sex, email)values(?,?,?)", "张三", "女", "1341935532@qq.com")
if err != nil {
fmt.Println("exec failed", err)
conn.Rollback() // 回滚事务
return
} rows, err := result.RowsAffected()
if err != nil {
fmt.Println("exec failed", err)
conn.Rollback() // 回滚事务
return
} conn.Commit() // 提交事务
fmt.Println("delete success", rows) }
golang操作mysql的更多相关文章
- [转帖]golang操作mysql使用总结
golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...
- golang操作mysql数据库
golang操作mysql数据库 代码: mysql的增.删.改.查 package main import ( "database/sql" "fmt" &q ...
- golang操作mysql使用总结
前言 Golang 提供了database/sql包用于对SQL数据库的访问, 作为操作数据库的入口对象sql.DB, 主要为我们提供了两个重要的功能: sql.DB 通过数据库驱动为我们提供管理底层 ...
- Golang操作MySQL的正确姿势
封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...
- Golang 操作mysql使用举例---连接本地数据库
连接数据库的方式有两种:TCP和Unix域socket. 本文使用Unix domain sockets连接数据库.关于TCP连接数据库可以参考Go 操作mysql使用举例 下面例子中,演示了使用sh ...
- Mysql学习(一)添加一个新的用户并用golang操作Mysql
Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...
- go语言之行--golang操作redis、mysql大全
一.redis 简介 redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写.遵守BSD协议.支持网 ...
- Go基础之--操作Mysql(一)
关于标准库database/sql database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库.它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现. ...
- Golang原生sql操作Mysql数据库增删改查
Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...
随机推荐
- springboot整合阿里云视频点播接口
官方SDK文档地址: https://help.aliyun.com/document_detail/57756.html?spm=a2c4g.11186623.6.904.4e0d3bd9VbkIC ...
- 模块化和webpack模块化打包
模块化和webpack模块化打包: 一.❀ 模块化 [导入import-----导出export] 1.为什么需要模块化? JavaScript 发展初期,代码简单地堆积在一起,只要能顺利地从上往下一 ...
- 【LeetCode】01 Matrix 解题报告
[LeetCode]01 Matrix 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/01-matrix/#/descripti ...
- 【LeetCode】413. Arithmetic Slices 等差数列划分
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 双指针 递归 动态规划 日期 题目地址:htt ...
- Subsequence(hdu3530)
Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- POJ 1986:Distance Queries
Distance Queries Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 18139 Accepted: 6248 ...
- 第八个知识点:交互式的定义如何帮助计算和IP类问题是什么
第八个知识点:交互式的定义如何帮助计算和IP类问题是什么 这是系列中的第8篇,我们主要讨论计算中交互作用的用处和IP类问题是什么. 为了回答这些问题,我们首先给交互式证明系统一个简洁的介绍.众所周知, ...
- Consistency Regularization for GANs
目录 概 主要内容 Zhang H., Zhang Z., Odena A. and Lee H. CONSISTENCY REGULARIZATION FOR GENERATIVE ADVERSAR ...
- Least Angle Regression
目录 引 一些基本的假设 LARS算法 算法 与别的方法结合 LARS与LASSO的关系 LARS 与 Stagewise 代码 Efron B, Hastie T, Johnstone I M, e ...
- [CodeLife]记毕业后第一份工作
记毕业后第一份工作与公司 写在前面--前言 已然临近21年五月,很快又是一年毕业季了,公司里来了应届的新人,忽然才意识到自己已经不是公司年龄最小的了((笑~).依稀还记得两年前,自己也是如他们那般青涩 ...