Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get github.com/jmoiron/sqlx go get github.com/go-sql-driver/mysql 连接数据库 db, err := sqlx.Connect("mysql", "...?parseTime=true") if err != nil {…
web开发基本都离不开访问数据库,在Gin中使用mysql数据库需要依赖mysql的驱动.直接使用驱动提供的API就要写很多样板代码.你可以找到很多扩展包这里介绍的是jmoiron/sqlx.另外还有一个用来处理空值的包guregu/null. go get github.com/go-sql-driver/mysql go get gopkg.in/guregu/null.v4 go get github.com/jmoiron/sqlx 连接数据库 jmoiron/sqlx包为databas…
Gin是一个用Golang编写的HTTP网络框架.它的特点是类似于Martini的API,性能更好.在golang web开发领域是一个非常热门的web框架. 启动一个Gin web服务器 使用下面的命令安装Gin go get -u github.com/gin-gonic/gin 在代码里添加依赖 import "github.com/gin-gonic/gin" 快速启动一个Gin服务器的代码如下 package main import "github.com/gin-…
在基于gin的golang web开发:路由中我们介绍了Gin的路由和一些获取链接中参数的方法,本文继续介绍其他获取参数的方法. 文件上传 在web开发中文件上传是一个很常见的需求,下面我们来看一下基于Gin的文件上传. func main() { router := gin.Default() router.MaxMultipartMemory = 8 << 20 // 8 MiB router.POST("/upload", func(c *gin.Context) {…
在前两篇文章介绍路由的时候,我们了解到gin可用通过类似DefaultQuery或DefaultPostForm等方法获取到前端提交过来的参数.参数不多的情况下也很好用,但是想想看,如果接口有很多个参数的时候再用这种方法就要调用很多次获取参数的方法,本文将介绍一种新的接收参数的方法来解决这个问题:模型绑定. gin中的模型绑定可以理解为:把请求的参数映射为一个具体的类型.gin支持JSON,XML,YAML和表单参数等多种参数格式,只需要在对应的字段上声明标签. 绑定表单或者查询字符串 type…
Gin除了模型绑定还提供了模型验证功能.你可以给字段指定特定的规则标签,如果一个字段用binding:"required"标签修饰,在绑定时该字段的值为空,那么将返回一个错误.开发web api的时候大部分参数都是需要验证的,比如email参数要验证是否是邮箱格式.phone参数要验证是否是手机号格式等等,使用模型验证方法可以将验证过程隔离在业务之外. 内置的验证标签 Gin通过集成go-playground/validator提供模型验证功能,并提供了很多常用验证规则可以满足我们大部…
在前文介绍访问数据库时介绍了github.com/jmoiron/sqlx包,本文基于这个包使用数据库事务. defer 在使用数据库事务之前,首先需要了解go语言的defer关键字.defer是go语言的延迟执行语句,defer后面的语句会被go进行延迟处理,在函数即将结束的时候,defer后面的语句将逆序执行.也就是说,先defer的语句最后执行.defer很像java或者C#中的finally语句.下面通过一个例子看一下defer. package main import "fmt&quo…
gin中间件(middleware)提供了类似于面向切面编程或路由拦截器的功能,可以在请求前和请求之后添加一些自定义逻辑.实际开发中有很多场景会用到中间件,例如:权限验证,缓存,错误处理,日志,事务等. 使用中间件 gin的中间件分为三类:全局中间件.路由中间件.分组路由中间件. 全局中间件:注册全局中间件之后注册的路由才会生效,如果有一些不希望使用全局中间件的路由规则,注册路由代码要放在注册全局中间件之前. 路由中间件:在注册路由时传入的中间件,只对当前路由规则生效. 分组路由中间件:在分组路…
在前后端分离的项目维护一份完整且及时更新的api文档会极大的提高我们的工作效率,传统项目中接口文档都是由后端开发手写的,这种文档很难保证及时性,久而久之便失去了参考意义.swagger给我们提供了一种新的维护文档的方式,在gin中只需要编写一些注释即可生成一份可交互的接口文档. go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/…
作为后端开发者我们要记住一句话:"永远不要相信用户的输入",这里所说的用户可能是人,也可能是另一个应用程序."永远不要相信用户的输入"是安全编码的准则,也就是说,任何输入的内容在验证无害之前都是有害的.很多应用程序的安全漏洞都和用户输入有关,比如SQL注入漏洞. 我们可以通过参数验证.sql语句过滤和参数化查询等方式对用户的输入进行处理来规避这种安全隐患.本文介绍第一种方法,并对基于gin的golang web开发:模型验证进行补充,了解更多的参数验证方法. 验证非…
Golang天生适合运行在docker容器中,这得益于:Golang的静态编译,当在编译的时候关闭cgo的时候,可以完全不依赖系统环境. 一些基础 测试容器时我们经常需要进入容器查看运行情况,以下命令启动一个centos容器并进入bash交互环境. docker run -it --rm centos bash -it 组合参数-i: 以交互模式运行容器,-t: 为容器重新分配一个伪输入终端. --rm 在容器退出时就能够自动清理容器. alpine镜像中没有bash,启动容器并进入终端的命令为…
JSON Web Token(JWT)是一种很流行的跨域认证解决方案,JWT基于JSON可以在进行验证的同时附带身份信息,对于前后端分离项目很有帮助. eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c JWT由三部分组成,每个部分之间用点…
本文是对前几篇文章的一些补充,主要包含两部分:单元测试和实际项目中使用路由的小问题. 拾遗1:单元测试 Golang单元测试要求代码文件以_test结尾,单元测试方法以Test开头,参数为*testing.T类型.以下是一个计算hash值的工具包和对应的单元测试. hashUtils.go package utils import ( "crypto/md5" "crypto/sha1" "fmt" ) func Md5(str string)…
微服务开发中服务间调用的主流方式有两种HTTP.RPC,HTTP相对来说比较简单.本文将使用 Resty 包来实现基于HTTP的微服务调用. Resty简介 Resty 是一个简单的HTTP和REST客户端工具包,简单是指使用上非常简单.Resty在使用简单的基础上提供了非常强大的功能,涉及到HTTP客户端的方方面面,可以满足我们日常开发使用的大部分需求. go get安装 go get github.com/go-resty/resty/v2 使用Resty提交HTTP请求 client :=…
前文分别介绍过了Resty和gin-jwt两个包,Resty是一个HTTP和REST客户端,gin-jwt是一个实现了JWT的Gin中间件.本文将使用这两个包来实现一个简单的用户登录功能. 环境准备 实现登录功能之前要提前准备一个用于查询用户是否存在的服务.访问服务http://127.0.0.1:18081/users?username=root时返回用户root的相关信息 { "total": 1, "data": [ { "id": 1,…
MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert into table_name(字段1,字段2) values('属性1','属性2'),('属性1','属性2') 插入多行数据 #insert into t1(字段1,字段2) select 字段1,字段2 from t2; (某张表的某几列数据选择出来,插入) #删除:delete from…
mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?php    $con=@mysql_connect('localhost','root','root');//连接数据库    mysql_select_db('test',$con);//选择数据库    $userInfo=mysql_query("select * from user"…
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create database wg charset utf8; 删除数据库: drop database wg; 选择数据库: use databases; 查看所有表: show tables; 查看创建数据库的语句:show create database databasename; 查看创建表的语句:show…
上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通过操作pymysql包的对象来管理我们的mysql. 首先导入pymysql包并通过connet对象建立数据库连接. import pymysql user=input('>>>输入用户名:') pwd=input('>>>输入密码:') conn= pymysql.con…
mysql增删改查相关操作 以前用mysql用的少,对于数据库相关的操作不熟悉,现在开始要接触数据库了,记录一下相关的基础操作吧. 1.数据库的授权操作 # mysql -u root -p Enter password: mysql> grant all privileges on *.* to root@'%' identified by '<password>' with grant option; ## 表示为root用户添加所有数据库所有权限,并可以给其他人授权. mysql&…
MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop database 库名; 3.使用数据库:use 库名; 二.创建数据表 1.创建表语句:create table 表名(字段名1 字段类型 字段约束,字段2 字段类型 字段约束...); 2.创建与现有表一样字段的新表:create table 表名 like 已有表名; 3.将查询结果创建新表:cr…
前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最后一节,文章结尾有整个项目的源码地址. 开发环境 开发工具:Pycharm 2020.1 开发语言:Python 3.8.0 Web框架:Django 3.0.6 数据库:MySQL5.7 操作系统:Windows 10 项目实战 1. 创建项目(学生管理系统-sms) File->New Proj…
之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库的增删改查. 准备工作: 所需工具:电脑上要安装好nodejs(官网https://nodejs.org/en/),下载并安装好nodejs之后,需要在cmd中再安装好express框架: npm install express-generator -g 安装完毕之后,检查一下是否安装成功: 还有一…
最近这段时间研究Node感觉不错,自己做了一个增删改查,虽然有些简陋,但是思想是想通的,其实所有项目都是增删改查,有助于初学者快速掌握Node 首先 本实例展示的是基于Node+Express+node-mysql快速搭建的一套增删改查,视图模板是jade,基本上都是现在能用的到的技术,市面上的实例也特别少,有用的又不新,所以自己写一个 基本工作 首先我们准备一些基本的,因为我是用mysql麻烦可以自己装一下mysql,去官网可以下各种操作系统的安装包. 实例就一张表,下面是这张表的建表语句  …
来源:http://blog.csdn.net/zhuming3834/article/details/51471434 这段时间公司要求我们做原生iOS和安卓的都转做H5开发APP,使用的工具HBuilder.公司这么要求我们也就只能转行做了.大家都是小白,好在公司有两位H5大神,他们先给我们一些代码看看,所以,我们上手也比较快.在做APP的过程中用到了一些本地存储,关于本地存储大家可以看看<App离线本地存储方案> .里面我只说说Web SQL,因为里面的localstorage,plus…
就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public class Bean { private int id; private String name; private String password; private String sex; public int getId() { return id; } public void setId(int id) { this.id = id…
MySQL 关注公众号"轻松学编程"了解更多. MySQL是关系型数据库,对大小写不敏感. MySQL属于关系型数据库, 优点: 复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询. 事务支持 使得对于安全性能很高的数据访问要求得以实现. 缺点 开发维护成本高 刻板.欠灵活.存储空间大 低访问速度 可扩展性差 一.常用数据类型 1.数值型 1.1 整型 int或integer:占4字节(一个字节8位),可以表示的范围:-232到+232(40多亿). bigin…
目录: 1.新建数据库 2.新建数据表 3.查看表结构 4.增删改查 建立一个数据库students 建立一块数据表class1 内容包括: id 主键 自动编号 无符号位 SMALLINT类型 name )类型 非空 唯一值 school ) 非空 默认值chengdu college 代码如下: 1.建立数据库 mysql> CREATE DATABASE students; Query OK, row affected (0.07 sec) 2.进入数据库 mysql> USE stud…
C/S:Client ServerB/S:Brower Server php主要实现B/S .net IIS java TomCat LAMP: Linux系统 A阿帕奇服务器 Mysql数据库 Php语言 mysql:常用代码 create table CeShi1( Uid varchar(50) primary key, Pwd varchar(50), Name varchar(50), Nation varchar(50), foreign key(Nation) references…
关于MySQL数据库——增删改查语句集锦 一.基本的sql语句 CRUD操作: create 创建(添加) read 读取 update 修改 delete 删除 .添加数据 ,'n001','2016-8-30 12:9:8') ; 给特定的列添加数据 insert into Info (code,name) values('p010','李四'); 自增长列的处理 ); insert into 表名 values(值) .删除数据 删除所有数据 delete from family 删除特定…