热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

luamysql教程_Lua使用LuaSQL访问数据库

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

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



推荐阅读
author-avatar
soar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有