2019独角兽企业重金招聘Python工程师标准>>>

openresty 前端开发入门五之Mysql篇

这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户

操作mysql主要用到了lua-resty-mysql库,代码可以在github上找得到

而且上面也有实例代码

由于官网给出的例子比较基本,代码也比较多,所以我这里主要介绍一些怎么封装一下,简化我们调用的代码

lua/mysql.lua

local mysql = require "resty.mysql"local config = {host = "localhost",port = 3306,database = "mysql",user = "root",password = "admin"
}local _M = {}function _M.new(self)local db, err = mysql:new()if not db thenreturn nilenddb:set_timeout(1000) -- 1 seclocal ok, err, errno, sqlstate = db:connect(config)if not ok thenreturn nilenddb.close = closereturn db
endfunction close(self)local sock = self.sockif not sock thenreturn nil, "not initialized"endif self.subscribed thenreturn nil, "subscribed state"endreturn sock:setkeepalive(10000, 50)
endreturn _M

其实就是简单把连接,跟关闭做一个简单的封装,隐藏繁琐的初始化已经连接池细节,只需要调用new,就自动就链接了redis,close自动使用连接池

lua/hello.lua

local cjson = require "cjson"
local mysql = require "mysql"
local req = require "req"local args = req.getArgs()local name = args['name']if name == nil or name == "" thenname = "root"
endname = ngx.quote_sql_str(name) -- SQL 转义,将 ' 转成 \', 防SQL注入,并且转义后的变量包含了引号,所以可以直接当成条件值使用local db = mysql:new()local sql = "select * from user where User = " .. namengx.say(sql)
ngx.say("<br/>")local res, err, errno, sqlstate = db:query(sql)
db:close()
if not res thenngx.say(err)return {}
endngx.say(cjson.encode(res))

访问 http://localhost/lua/hello?name=root

即可获取mysql中的name为root的的所有用户,如果没有name参数,则默认获取root的值

从输出的数据中,可以看出res其实是一个数组,而且不管返回的数据是多少条,它都是一个数组,当我们查询的结果只有一条的时候,可以通过 res[1] 来获取一条记录,每一行数据又是一个table,可以通过列名来得到value

ok,到这里我们已经可以获取用户输入的值,并且从mysql中获取数据,然后返回json数据了,已经可以开发一些简单的接口了

示例代码 参见demo5部分

转载于:https://my.oschina.net/362228416/blog/818199

openresty 前端开发入门五之Mysql篇相关推荐

  1. openresty json mysql_openresty 前端开发入门五之Mysql篇

    openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...

  2. openresty 前端开发入门四之Redis篇

    2019独角兽企业重金招聘Python工程师标准>>> 这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户 操作redis主要用 ...

  3. openresty 前端开发入门三之JSON篇

    这章主要介绍一下,lua怎么返回一个json字符串,怎么把一个table转成json字符串,又怎么把一个json字符串转成json 其实很简答,直接使用cjson库的encode.decode方法即可 ...

  4. 前端开发入门就这一篇文章

    本文涉及最最基础的HTML+CSS 1.HTML是什么鬼? 大白话:就是用成对尖括号(类似:<元素></元素>) 表示内容结构的一组方法,就是搭一个骨架,骨架(元素)中才放入各 ...

  5. Web前端html5+css3前端开发入门学习笔记

    文章目录 前言 HTML 认识HTML 1. 网页组成和本质 2.了解浏览器 3.web标准 4.HTML感知 5.HTML骨架 6.编译软件vscode的简介和使用 7.注释 8.标签组成和关系 9 ...

  6. web前端开发入门学习线路图详解-2019升级版

    现如今,Web前端工程师已经成为各大互联网公司不可或缺的热门职位,从业者队伍日渐庞大,这其中不乏零基础学习者和转行人士.为了方便大家系统而全面的掌握前端基础知识,千锋小编特意整理了web前端开发入门学 ...

  7. Web前端开发入门之网页制作三要素!

    Web前端开发是由网页制作演变而来的,主要由HTML.CSS.JavaScript三大要素组成.专业的Web前端开发入门知识也一定会包含这些内容,今天小千就给大家简单介绍一下. HTML,超文本标记语 ...

  8. html在线时间统计图,Web前端开发入门,HTML一张图学会,还在看数小时视频浪费时间?...

    同样的地方,同样的时间,又跟大家见面了.想学习前端朋友可以加我们的前端学习群:617327703 很多人问我,前端开发入门怎么开始?这里呢,先看下我之前发的文章有大体的概括思路跟流程在里面.今天主要分 ...

  9. [原创].NET 分布式架构开发实战五 Framework改进篇

    原文:[原创].NET 分布式架构开发实战五 Framework改进篇 .NET 分布式架构开发实战五 Framework改进篇 前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章 ...

最新文章

  1. java深度克隆_浅析Java中clone()方法浅克隆与深度克隆
  2. 当 Vue 处理数组与处理纯对象的方式一样
  3. 7、恢复数据库(mysql命令)
  4. Uva 11600 期望DP
  5. Drools学习 入门实例
  6. uniformRowHeights属性
  7. 哈希拓展--布隆过滤器
  8. Pytorch 之Tensor 初探
  9. win7桌面计算机没了,win7系统桌面的计算机图标没了的解决方法
  10. HTML5 中定位问题
  11. 又一个查询,哥整了一天,NND有点受不鸟了
  12. 当跨国企业女职业经理人遇上创业女 CEO,两者会擦出什么样的火花?
  13. 再谈协方差矩阵之主成分分析 2
  14. 浅析GestureDetector
  15. php UUID 分布式生成用不重复的随机数方法
  16. Java基础之数组合并,详细讲解
  17. 人类已经无法阻止苹果了——吐槽PC厂商
  18. mysql主备集群(高可用)
  19. 【deep_thoughts】30_PyTorch LSTM和LSTMP的原理及其手写复现
  20. English trip V1 - 3.What Would you Like? Teacher:Lamb Key: would like to

热门文章

  1. ECMAScript 5 —— 单体内置对象之Math对象
  2. Nutch 二次开发之parse正文内容
  3. Android安卓开发中图片缩放讲解
  4. [Android]ListView性能优化之视图缓存
  5. .asmx支持post请求或者get请求调用(WebService 因 URL 意外地以 结束,请求格式无法识别 的解决方法)...
  6. Linux下截取指定时间段日志并输出到指定文件
  7. python中package机制的两种实现方式(转载)
  8. 用Inno Setup来解决.NetFramework安装问题
  9. redis之 centos 6.7 下安装 redis-3.2.5
  10. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]