`
qq362228416
  • 浏览: 33040 次
社区版块
存档分类
最新评论

openresty 前端开发入门五之Mysql篇

阅读更多
openresty 前端开发入门五之Mysql篇

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

操作mysql主要用到了lua-resty-mysql库,代码可以在[github](https://github.com/openresty/lua-resty-mysql)上找得到

而且上面也有实例代码

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

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 then
        return nil
    end
    db:set_timeout(1000) -- 1 sec

    local ok, err, errno, sqlstate = db:connect(config)

    if not ok then
        return nil
    end
    db.close = close
    return db
end

function close(self)
local sock = self.sock
    if not sock then
        return nil, "not initialized"
    end
    if self.subscribed then
        return nil, "subscribed state"
    end
    return sock:setkeepalive(10000, 50)
end

return _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 == "" then
name = "root"
end

name = ngx.quote_sql_str(name) -- SQL 转义,将 ' 转成 \', 防SQL注入,并且转义后的变量包含了引号,所以可以直接当成条件值使用

local db = mysql:new()

local sql = "select * from user where User = " .. name

ngx.say(sql)
ngx.say("<br/>")

local res, err, errno, sqlstate = db:query(sql)
db:close()
if not res then
ngx.say(err)
    return {}
end

ngx.say(cjson.encode(res))

```

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

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

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

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

[示例代码](https://github.com/362228416/openresty-web-dev) 参见demo5部分
分享到:
评论

相关推荐

    openresty-web-dev:openresty网站演示

    openresty 前端开发进阶四之session篇 openresty 前端开发进阶六之websocket篇 openresty 前端开发高级应用一之性能优化 openresty 前端开发高级应用一之动态追踪技术 openresty 简单应用 openresty 灰度发布 ...

    openresty官方学习资料

    首先,我们来看《OpenResty 入门到精通》。这本书主要介绍了OpenResty的基础概念和使用方法,包括如何安装和配置OpenResty环境,理解OpenResty的架构设计,以及如何编写基本的Lua脚本来处理HTTP请求。读者会学习到...

    openresty 入门

    本篇内容将围绕 OpenResty 入门和最佳实践进行详细讲解。 首先,对于想要入门 OpenResty 的初学者来说,了解 Lua 语言是必须的。Lua 是一种轻量级的脚本语言,易于学习,它提供了丰富的数据类型和控制结构,以及...

    openresty(nginx-lua-module-zh-wiki)中文文档.pdf

    OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web ...

    OpenResty最佳实践

    OpenResty是一套基于Nginx和LuaJIT的高性能Web平台,它将Lua语言和Nginx模块化设计的优点...它为那些对Web前端开发、网关开发以及限流代理服务器开发感兴趣的读者提供了宝贵的指导,同时也为OpenResty社区做出了贡献。

    读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务.zip

    读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务

    ubuntu下搭建ngx_openresty环境

    ncurses库是ngx_openresty框架所需的依赖项之一。安装ncurses库的步骤如下: 1. 将ncurses压缩包传输到服务器上。 2. 解压缩ncurses压缩包:`tar –zxvf ncurses-5.6` 3. 进入ncurses目录:`cd /lamp/ncurses-5.6` ...

    openresty实践

    OpenResty之所以能够高效地处理请求,得益于其内部的cosocket网络模型,它允许开发者以非阻塞的方式执行异步的socket操作。这种机制能够在不增加额外线程或进程的情况下,提高并发处理能力。 对于Web开发人员来说,...

    OpenResty开发最佳实践pdf

    通过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以...

    openresty 最佳实践

    Lua的环境搭建、基础数据类型、表达式控制结构、函数定义、模块化编程等都是开发OpenResty应用时需要熟练掌握的知识点。 在开发OpenResty应用时,首先要了解其基础概念,包括location匹配规则、日志记录、反向代理...

    Linux(CentOS7X_64)_+openresty(nginx)+Mysql+PHP+Red_lnmp

    Linux(CentOS7X_64)_+openresty(nginx)+Mysql+PHP+Red_lnmp-utils

    openresty源码(openresty-1.19.9.1.tar.gz)

    同时,OpenResty也支持与Redis、MySQL等数据库的交互,方便实现数据的存储和查询。 总之,OpenResty-1.19.9.1的源码提供了深入了解Nginx和Lua结合工作的机会,开发者可以通过阅读和研究源码,提升自己在Web服务架构...

    ProxyGatewayPGW基于openresty开发可以作为接口网关使用

    PGW(Proxy Gateway) Proxy Gateway基于openresty(nginx-lua-module)开发,可以作为接口网关(api gateway)使用,整合业务模块接口,微服务治理聚合,通过web配置界面,能够轻松进行代理配置管理,支持负载均衡...

    OpenResty(openresty-1.21.4.1.tar.gz)

    OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的...

    KONG OPENRESTY.pdf

    Kong OPENRESTY Kong 是一个开源的 API 管理层,用于保护、管理和扩展 API 和微服务。它提供了一种灵活的方式来管理 API 流量、身份验证、速率限制、分析和插件等功能。 API Gateway 模式是微服务架构中的一种常见...

    《OpenResty最佳实践》 .pdf

    《OpenResty最佳实践》这本书籍,旨在向读者介绍OpenResty的使用方法和最佳实践,从而让读者能够充分利用OpenResty进行高效、安全的Web开发。 书籍涵盖了多个知识点,从最基础的Lua脚本语言学习,到OpenResty的高级...

    OpenResty安装过程.pptx

    - **定义**:OpenResty是一款基于Nginx与Lua的高性能Web平台,它使得开发人员能够轻松地编写出高性能、高可靠性的Web应用程序和服务。 - **特点**: - 集成了强大的Nginx核心和许多有用的Nginx模块。 - 支持丰富的...

    OpenResty1.25版本安装包

    总之,OpenResty 1.25.3.1是一个强大的Web开发框架,它融合了Nginx的高性能和Lua的灵活性,为构建高性能、高并发的Web应用提供了理想平台。通过深入了解和熟练使用OpenResty,开发者可以实现高效、可扩展的服务架构...

    第一章 安装OpenResty(Nginx+Lua)开发环境

    本章将深入讲解如何安装OpenResty开发环境,帮助你搭建起一个基于Nginx的动态、高性能Web应用程序平台。 首先,我们要了解OpenResty是什么。OpenResty是一个开源项目,它集成了Nginx服务器和LuaJIT,允许开发者在...

Global site tag (gtag.js) - Google Analytics