如何在Lua编程中使用MySQL?
Lua 提供了不同的库,可以用来操作 MySQL。最流行的用于在 Lua 中操作 MySQL 的框架是 **LuaSQL**。
LuaSQL 是一个从 Lua 到 DBMS 的简单接口。它使 Lua 程序能够:
- 连接到 **ODBC、ADO、Oracle、MySQL、SQLite、Firebird** 和 **PostgreSQL** 数据库;
- 执行任意 SQL 语句;
- 以逐行游标的方式检索结果。
你可以使用以下命令下载 MySQL:
luarocks install luasql-mysql
MySQL 数据库设置
为了使下面的例子按预期工作,我们需要进行初始数据库设置。假设条件如下:
- 你已经安装并设置了 MySQL,默认用户为 root,密码为 **'123456'**。
- 你已经创建了一个名为 **test** 的数据库。
导入 MySQL
假设你的 Lua 实现正确,我们可以使用简单的 require 语句导入 sqlite 库。
mysql = require "luasql.mysql"
变量 **mysql** 将通过引用主 **mysql** 表来提供对函数的访问。
设置连接
我们可以通过初始化 MySQL 环境,然后为该环境创建连接来设置连接。如下所示。
create environment object env = assert (mysql.mysql()) connect to data source con = assert (env:connect("test","root","123456"))
上述连接将连接到现有的 MySQL 文件,并与新创建的文件建立连接。
以下代码是建立连接,然后遍历 MySQL 数据库中存在的表的完整代码。
示例
考虑以下代码:
-- load driver local driver = require "luasql.mysql" create environment object env = assert (driver.mysql()) connect to data source con = assert (env:connect("test","root","123456")) -- reset our table res = con:execute"DROP TABLE people" res = assert (con:execute[[ CREATE TABLE people( name varchar(50), email varchar(50) ) ]]) add a few elements list = { { name="Mukul Latiyan", email="[email protected]", }, { name="Manoel Joaquim", email="[email protected]", }, { name="Rahul", email="[email protected]", }, } for i, p in pairs (list) do res = assert (con:execute(string.format([[ INSERT INTO people VALUES ('%s', '%s')]], p.name, p.email) )) end -- retrieve a cursor cur = assert (con:execute"SELECT name, email from people") -- print all rows, the rows will be indexed by field names row = cur:fetch ({}, "a") while row do print(string.format("Name: %s, E-mail: %s", row.name, row.email)) -- reusing the table of results row = cur:fetch (row, "a") end -- close everything cur:close() -- already closed because all the result set was consumed con:close() env:close()
输出
Name: Mukul Latiyan, E-mail: [email protected] Name: Manoel Joaquim, E-mail: [email protected] Name: Rahul, E-mail: [email protected]
广告