Lua 数据库访问
Lua 数据库的操作库:LuaSQL是一个开源库,支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。
以下操作以MySQL的数据库连接。
LuaSQL 可以使用 LuaRocks 来安装可以根据需要安装需要的数据库驱动。

LuaRocks 安装方法

  1. $ wget http://luarocks.org/releases/luarocks-2.2.1.tar.gz
  2. $ tar zxpf luarocks-2.2.1.tar.gz
  3. $ cd luarocks-2.2.1
  4. $ ./configure; sudo make bootstrap
  5. $ sudo luarocks install luasocket
  6. $ lua
  7. Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
  8. > require "socket"

Window 下安装 LuaRocks

https://github.com/keplerproject/luarocks/wiki/Installation-instructions-for-Windows
安装不同数据库驱动:

  1. luarocks install luasql-sqlite3
  2. luarocks install luasql-postgres
  3. luarocks install luasql-mysql
  4. luarocks install luasql-sqlite
  5. luarocks install luasql-odbc

也可以使用源码安装方式,Lua Github 源码地址:https://github.com/keplerproject/luasql

Lua 连接MySql 数据库操作示例

  1. require "luasql.mysql"
  2. --创建环境对象
  3. env = luasql.mysql()
  4. --连接数据库
  5. conn = env:connect("数据库名","用户名","密码","IP地址",端口)
  6. --设置数据库的编码格式
  7. conn:execute"SET NAMES UTF8"
  8. --执行数据库操作
  9. cur = conn:execute("select * from role")
  10. row = cur:fetch({},"a")
  11. --文件对象的创建
  12. file = io.open("role.txt","w+");
  13. while row do
  14. var = string.format("%d %s\n", row.id, row.name)
  15. print(var)
  16. file:write(var)
  17. row = cur:fetch(row,"a")
  18. end
  19. file:close() --关闭文件对象
  20. conn:close() --关闭数据库连接
  21. env:close() --关闭数据库环境

:::tips 注意:5.2 版本之后,require 不再定义全局变量,需要保存其返回值。
require "luasql.mysql"
需要写成:
luasql = require "luasql.mysql"
:::