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