如何在 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="immukul@protonmail.com", },
   { name="Manoel Joaquim", email="manoel@cafundo.com", },
   { name="Rahul", email="rahul@protonmail.com", },
}
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: immukul@protonmail.com Name: Manoel Joaquim, E-mail: manoel@cafundo.com Name: Rahul, E-mail: rahul@protonmail.com
