如何在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]

更新于:2021年7月20日

1K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告