lua mysql教程_Lua 使用 LuaSQL 访问数据库

本文介绍了如何使用Lua社区开发的LuaSQL模块来访问MySQL数据库。内容包括LuaRocks的安装方法,LuaSQL的安装步骤,以及通过Lua脚本连接MySQL数据库并执行查询操作的例子。
摘要由CSDN通过智能技术生成

Lua 有可以访问数据库。虽然 Lua 既没有官方的访问数据库的模块,也没有像 Python 输出 DB-API 规范。但 Lua 社区开发了 LuaSQL。

LuaSQL 是 Lua 语言访问数据库最好的模块之一,它是开源的,支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL

本章接下来的内容主要讲解使用 LuaSQL 访问 MySQL 数据库

LuaSQL 安装

LuaRocks 安装

LuaSQL 可以使用 LuaRocks 安装我们需要的数据库驱动

LuaRocks 是 Lua 语言的包/模块管理器,利用它可以方便的安装和删除 Lua 社区开发的各种有用的类库

Linux LuaRocks 编译安装方法

[root@localhost ~]# cd ~

[root@localhost ~]# wget http://luarocks.org/releases/luarocks-2.4.3.tar.gz

[root@localhost ~]# tar zxpf luarocks-2.4.3.tar.gz

[root@localhost luarocks-2.4.3]# cd luarocks-2.4.3

[root@localhost luarocks-2.4.3]# ./configure; sudo make bootstrap # 编译安装

[root@localhost luarocks-2.4.3]# sudo luarocks install luasocket

[root@localhost luarocks-2.4.3]# $ lua

Lua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio

Window 下安装 LuaRocks

Windows 下安装 LuaRocks 可以查看这边文章

使用 LuaRocks 安装不同数据库驱动

luarocks install luasql-sqlite3 # sqlite 驱动

luarocks install luasql-postgres # postgres 驱动

luarocks install luasql-mysql # mysql 驱动

luarocks install luasql-odbc # odbc 驱动

使用编译源码方式安装 LuaSQL

我们也可以使用源码方式安装 LuaSQL。

Lua 使用 LuaSQL 连接 MySQL 数据库

假设我们要连接的 MySQL 服务器连接信息如下

HOST : 127.0.0.1

DATABASE: test

USER: root

PASSWD: ''

PORT: 3306

test 数据库中有一张表,表中有数据如下

MariaDB [test]> select * from comps;

+----+--------------+-----------------------+-----------+------------+

| id | name | website | city | ceo |

+----+--------------+-----------------------+-----------+------------+

| 1 | 腾讯 | http://www.qq.com | 深圳 | 马化腾 |

| 2 | 阿里巴巴 | http://www.taobao.com | 杭州 | 马云 |

| 3 | 小米 | http://www.mi.com | 北京 | 雷军 |

| 4 | 百度 | http://www.baidu.com | 北京 | 李彦宏 |

| 5 | 网易 | http://www.163.com | 广州 | 丁磊 |

| 6 | Amazon | https://www.z.cn | 西雅图 | Jeff Bezos |

+----+--------------+-----------------------+-----------+------------+

6 rows in set (0.00 sec)

你可以通过以下语句来建表

DROP TABLE IF EXISTS `comps`;

CREATE TABLE `comps` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`website` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`city` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`ceo` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `comps` VALUES (1,'腾讯','http://www.qq.com','深圳','马化腾'),(2,'阿里巴巴','http://www.taobao.com','杭州','马云'),(3,'小米','http://www.mi.com','北京','雷军'),(4,'百度','http://www.baidu.com','北京','李彦宏'),(5,'网易','http://www.163.com','广州','丁磊');

main.lua 文件内容

-- !/usr/bin/lua

-- -*- encoding:utf-8 -*-

-- filename: main.lua

-- author: 简单教程(www.twle.cn)

-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

driver = require "luasql.mysql"

--创建环境对象

env = assert(driver.mysql())

--连接数据库

--conn = env:connect("数据库名","用户名","密码","IP地址",端口)

conn = env:connect("twle","root","","127.0.0.1",3306)

--设置数据库的编码格式

conn:execute"SET NAMES UTF8"

--执行数据库操作

cur = conn:execute("select * from comps")

row = cur:fetch({},"a")

--文件对象的创建

file = io.open("comps.txt","w+");

while row do

var = string.format("%d %s\n", row.id, row.name)

print(var)

file:write(var)

row = cur:fetch(row,"a")

end

file:close() --关闭文件对象

conn:close() --关闭数据库连接

env:close() --关闭数据库环境

运行以上 Lua 脚本,输出结果如下

[root@localhost lua]# lua main.lua

1 腾讯

2 阿里巴巴

3 小米

4 百度

5 网易

6 Amazon

打开文件 comps.txt 内容如下

[root@localhost lua]# comps.txt

1 腾讯

2 阿里巴巴

3 小米

4 百度

5 网易

6 Amazon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值