mysql模块下载

mysql模块我们从github上下载,地址为:www.github.com/go-sql-driver/mysql

go get  "github.com/go-sql-driver/mysql"
go get "github.com/jmoiron/sqlx"

struct字段名一样

我们先创建一个表来做测试,sql语句如下

mysql> use test
Database changed
mysql> create table person (user_id int primary key auto_increment, username varchar(260), sex varchar(260), email varchar(260)) charset utf8;
mysql> CREATE TABLE place ( country varchar(200), city varchar(200), telcode int) charset utf8;

我们如果要操作数据库数据,首先要定义一个结构体,结构体的变量名字必须和表字段一样。

type Person struct{
// 所有字段必须和数据库的保持一致,如果第一列使用了和数据库字段不一样的名字,那么就需要在
// ·· 之间写明真正的字段名
UserId int `db:"user_id`
Username string `db:"username"`
Sex string `db:"sex"`
Email string `db:"email"`
}
type Place struct{
Country string `db:"country"`
City string `db:"city"`
TelCode int `db:"telcode"`
}

insert sql command

我们创建好数据库以后,那么就开始插入数据库。

package main
import (
"fmt" _ "github.com/go-sql-driver/mysql" // 导入数据库模块
"github.com/jmoiron/sqlx" // 导入数据库模块
)
var Db *sqlx.DB func init() {
// 把连接数据库的方法放在这里的话,那么函数一执行的话就会连接数据库了。
// 连接格式为(数据库类型,用户名:密码@tcp(ip:port)/库名
database, err := sqlx.Open("mysql", "root:123..aa@tcp(192.168.56.14:3306)/test")
if err != nil {
fmt.Println("open mysql faild,", err)
return
}
Db = database
} func main() {
r, err := Db.Exec("insert into person values(?,?,?,?)", 2, "Leo", "man", "test@qq.com") //执行插入动作的sql语句
if err != nil {
fmt.Println("exec sql command failed", err)
return
}
id, err := r.LastInsertId() // 插入成功后会返回这条记录的自增ID
if err != nil {
fmt.Println("get the insert ID failed", err)
return
}
fmt.Println("insert successful, the id :", id)
}

update sql command

更新数据库的sql语句

// mysql_update
package main import (
"fmt" _ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
) var Db *sqlx.DB func init() {
conn, err := sqlx.Open("mysql", "root:123..aa@tcp(192.168.56.14:3306)/test")
if err != nil {
fmt.Println("connect mysql failed,", err)
return
}
Db = conn
} func main() {
_, err := Db.Exec("update person set username=? where user_id=?", "ljf", 1)
if err != nil {
fmt.Println("execute sql command happend a error,", err)
return
}
fmt.Println("the result:", _)
}

select sql command

mysql查询语句。

// mysql_select
package main import (
"fmt" _ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
) type Person struct {
UserId int `db:"user_id"`
Username string `db:"username"`
Sex string `db:"sex"`
Email string `db:"email"`
} type Place struct {
Country string `db:"country"`
City string `db:"city"`
TelCode int `db:"telcode"`
} var Db *sqlx.DB func init() {
database, err := sqlx.Open("mysql", "root:123..aa@tcp(192.168.56.14:3306)/test")
if err != nil {
fmt.Println("connect mysql failed", err)
return
}
Db = database
} func main() {
var person []Person
err := Db.Select(&person, "select * from person;")
if err != nil {
fmt.Println("exec failded", err)
return
}
fmt.Println("select succ:", person)
}

delete sql command

删除的sql语句

// mysql_delete
package main import (
"fmt" _ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
) var Db *sqlx.DB func init() {
conn, err := sqlx.Open("mysql", "root:123..aa@tcp(192.168.56.14:3306)/test")
if err != nil {
fmt.Println("connect mysql failed,e:", err)
return
}
Db = conn
} func main() {
result, err := Db.Exec("delete from person where user_id=?", 2)
if err != nil {
fmt.Println("execute sql command error", err)
return
} fmt.Println("result", result) }

16 go操作Mysql的更多相关文章

  1. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  2. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  3. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  4. Python 操作 MySQL 之 pysql 与 ORM(转载)

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  5. Python开发【第十九篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. 【Python之路Day12】网络篇之Python操作MySQL

    pymysql是Python中操作MySQL的模块,使用方法和MySQLDB几乎一样. 1. 执行SQL语句 #!/usr/bin/env python3 # -*- coding: utf-8 -* ...

  7. python学习之操作mysql

    欢迎点击个人博客 http://www.iwangzheng.com/ 刚开始学python,所以很多代码都需要在ipython里尝试一下.今天记录的是最基本的操作mysql数据库. 写数据库连接操作 ...

  8. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  9. Day12(补充) Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

随机推荐

  1. IO -阻塞,非阻塞, 同步,异步

    转载自: http://blog.csdn.net/historyasamirror/article/details/5778378 同步(synchronous) IO和异步(asynchronou ...

  2. C语言 · 求最大公约数

    算法提高 求最大公约数   时间限制:1.0s   内存限制:512.0MB      编写一函数gcd,求两个正整数的最大公约数. 样例输入: 5 15样例输出:5 样例输入: 7 2样例输出:1 ...

  3. (转)CDH中启动的hive,使用jdbc连接hiveServer2时候权限不足解决方案

    Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.securi ...

  4. 枚举Enum和常量0之间的恩怨

    1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...

  5. [算法]和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...

  6. Extjs4.2 Grid搜索Ext.ux.grid.feature.Searching的使用

    背景 Extjs4.2 默认提供的Search搜索,功能还是非常强大的,只是对于国内的用户来说,还是不习惯在每列里面单击好几下再筛选,于是相当当初2.2里面的搜索,更加的实用点,于是在4.2里面实现. ...

  7. sqoop 常用命令整理(二)

    26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator. 它有三个接口 Validator. Property: validator Description: Dr ...

  8. Should I expose asynchronous wrappers for synchronous methods?

    Lately I've received several questions along the lines of the following, which I typically summarize ...

  9. USB学习笔记连载(十二):USB描述符

    USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.H ...

  10. 摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置

    上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接.输出一帧图像与输出时钟PCLK有关. 上图是OV7725实现的整体框架,有点丑.FPGA描述SCC ...