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 ...
随机推荐
- go语言可变参数的坑
0x00 前提 对可变参数不了解的同学,可以先看这篇文章可变参数终极指南 0x01 第一个坑 不能通过空接口类型向可变参数传递一个普通的切片 ,需要将普通切片转换为空接口切片 0x02 第二个坑 可变 ...
- Android Studio OkHttpClient使用
本次来记录下OkHttpClient的使用,OkHttpClient是用来完成android 客户端对服务端请求的工具. 首先记住,使用网络的时候一定要加入权限,加入到AndroidMainfest. ...
- 引用Interop.SQLDMO.dll后的注意事项。
SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份.还原数据库等各种功能.近日有客户要求为其在后台添加一个管理数据库的功能.于是就出现了这篇文章. 由于客户的数据库和WEB服 ...
- [Linux实用工具]Linux监控工具munin的安装和配置
〇.摘要 munin是用于Linux系统(也可以监控windows系统)的监控软件.munin除了可以监控系统的各项数值之外,最大的好处是可以自己编写插件自定义监控需要的数值.整个系统的架构简单明了, ...
- matplotlib-plot-style
style 1.绘制x=1 2.不同线宽 enumerate(Widths) 3.线型(实线,虚线,点划线) linestyle set_dashes 4.自动设置线颜色 5.点的显示形式 marke ...
- 微信JSSDK接口,previewImage
原文:https://www.hackhp.com/801.html 在微信里看过文章的应该知道,文章里的图片点击后可以放大.分享和保存. 然而自己在微信里开发的网页,里面的图片点击后没办法实现这个效 ...
- PCL点云特征描述与提取(4)
如何从一个深度图像(range image)中提取NARF特征 代码解析narf_feature_extraction.cpp #include <iostream> #include & ...
- OpenResty最佳实践
https://moonbingbing.gitbooks.io/openresty-best-practices/content/
- JS复制内容到剪贴板(兼容FF/Chrome/Safari所有浏览器)
现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了. 在FLASH 9 时代,有一个通杀所有浏 ...
- [转]Android开源框架ImageLoader的完美例子
Android开源框架ImageLoader的完美例子 2013年8月19日开源框架之Universal_Image_Loader学习 很多人都在讨论如何让图片能在异步加载更加流畅,可以显示大量图片, ...