16 go操作Mysql
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的更多相关文章
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- Python 操作 MySQL 之 pysql 与 ORM(转载)
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python开发【第十九篇】:Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- 【Python之路Day12】网络篇之Python操作MySQL
pymysql是Python中操作MySQL的模块,使用方法和MySQLDB几乎一样. 1. 执行SQL语句 #!/usr/bin/env python3 # -*- coding: utf-8 -* ...
- python学习之操作mysql
欢迎点击个人博客 http://www.iwangzheng.com/ 刚开始学python,所以很多代码都需要在ipython里尝试一下.今天记录的是最基本的操作mysql数据库. 写数据库连接操作 ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
- Day12(补充) Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
随机推荐
- IO -阻塞,非阻塞, 同步,异步
转载自: http://blog.csdn.net/historyasamirror/article/details/5778378 同步(synchronous) IO和异步(asynchronou ...
- C语言 · 求最大公约数
算法提高 求最大公约数 时间限制:1.0s 内存限制:512.0MB 编写一函数gcd,求两个正整数的最大公约数. 样例输入: 5 15样例输出:5 样例输入: 7 2样例输出:1 ...
- (转)CDH中启动的hive,使用jdbc连接hiveServer2时候权限不足解决方案
Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.securi ...
- 枚举Enum和常量0之间的恩怨
1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...
- [算法]和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- Extjs4.2 Grid搜索Ext.ux.grid.feature.Searching的使用
背景 Extjs4.2 默认提供的Search搜索,功能还是非常强大的,只是对于国内的用户来说,还是不习惯在每列里面单击好几下再筛选,于是相当当初2.2里面的搜索,更加的实用点,于是在4.2里面实现. ...
- sqoop 常用命令整理(二)
26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator. 它有三个接口 Validator. Property: validator Description: Dr ...
- Should I expose asynchronous wrappers for synchronous methods?
Lately I've received several questions along the lines of the following, which I typically summarize ...
- USB学习笔记连载(十二):USB描述符
USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.H ...
- 摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置
上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接.输出一帧图像与输出时钟PCLK有关. 上图是OV7725实现的整体框架,有点丑.FPGA描述SCC ...