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 ...
随机推荐
- [转]SpringMVC<from:form>表单标签和<input>表单标签简介
原文地址:https://blog.csdn.net/hp_yangpeng/article/details/51906654 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标 ...
- zookeeper学习:知识点收集
其实学习zookeeper挺简单的,找一本书或者网上的资源,按照其中的例子做一遍就大致了解了.之前是自己学习的方法有问题. 1. 会启动单机版的服务器,并使用客户端连接,然后进行节点的各种操作 2. ...
- ubuntu 14.04 gitlab 的搭建
经过两天的尝试,gitlab 终于在 ubuntu14.04 上面搭建起来. 一.安装相关软件. // 执行如下命令: sudo apt-get install vim git curl openss ...
- tensorflow入门 (一)
转载:作者:地球的外星人君链接:https://www.zhihu.com/question/49909565/answer/207609620来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...
- awk和sed (十二)
[教程主题]:4.awk和sed [主要内容] [1]awk AWK是贝尔实验室1977年搞出来的文本出现神器.之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberg ...
- android开发(29) 自定义曲线,可拖动,无限加载
项目需要 做一个曲线,该曲线的数据时不断加载的.如下图,当不断向左拖动时,图形曲线要随着拖动移动,并在拖动到边界时需要加载更多数据. 先看步骤: 1.在Activity里放一个surfaceView ...
- mysql查看不同级别的字符集
库的字符集: SELECT default_character_set_name FROM information_schema.SCHEMATA SWHERE schema_name = 'test ...
- SpringCloud 详解配置刷新的原理 使用jasypt自动加解密后 无法使用 springcloud 中的自动刷新/refresh功能
之所以会查找这篇文章,是因为要解决这样一个问题: 当我使用了jasypt进行配置文件加解密后,如果再使用refresh 去刷新配置,则自动加解密会失效. 原因分析:刷新不是我之前想象的直接调用conf ...
- windows10激活工具,绿色无毒,不改浏览器主页
最近发现一个很好用的Windows10 永久激活的工具,比KMS什么的管用,而且无毒无公害.几乎支持所有的win10版本.感兴趣的朋友可以试试.之前win10没洗白的同学,也试试吧,说不定就洗白了呢. ...
- 在kali linux之下安装wps之后 报错字体缺失
启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可. 第 ...