lua连接mysql数据库
环境配置
1、安装好lua,我的版本是5.4
2、下载mysql的c开发库
3、下载luarocks用于安装luasocket包和luasql-mysql包
4、配置一个本地或者远程的mysql服务器和一个测试的数据库,以及一个测试用户
环境配置中的一些注意事项(Linux)
1、下载mysql的开发库,通过下面命令下载
sudo apt-get install libmysqlclient-dev
然后,默认的文件路径是
\usr\include\mysql
在安装luasql-mysql包之前,首先要安装好mysql的开发库,否则他会提示你。
如果他提示找不到mysql.h的话,需要使用下面的命令
sudo apt-get install luarocks sudo apt-get install git sudo luarocks install luasql-mysql MYSQL_INCDIR=/usr/include/mysql
注意的是,如果你后面的参数选项是MYSQL_DIR=path,这里的path是你自己的mysql.h的路径。那么他会在path后面加一个/include,即会变成path/include,然后告诉你在这个路径下没有找到mysql.h
当然,如果你找不到自己的mysql.h的路径,那么,可以通过下面命令来查找
whereis mysql.h
如果不能下载安装,
本地源码安装:
下载并解压luasql-master
sudo luarocks make rockspec/luasql-mysql-2.6.0-1.rockspec MYSQL_INCDIR=/usr/include/mysql
2、在本地或者远程配置一个mysql的服务器,然后,创建一个测试用的数据库,比如说test,然后,设置一个可以访问这个数据库的用户。
可以通过授权的方式来创建这个用户
grant all privileges on test.* to 'zyf'@'192.168.213.129' identified by 'zyf' with grant option
test是数据库名字,‘zyf’@’192.168.213.129’是用户,@前面的是用户名zyf,后面是一个允许访问这个数据库的ip地址,如果是在本地,那么就是localhost。by后面的字符串是密码zyf。
如果没有这个用户,那么上面的语句会创建一个新的用户。
然后在test数据库创建一个表,插入一些数据。
代码
r=require "luasql.mysql" env=r.mysql() conn = env:connect("数据库","用户","密码","192.168.213.1",3306) cur=conn:execute("select * from mytable") row=cur:fetch({},"a") file=io.open('role.txt','w+') while row do var=string.format("%d %s",row.id,row.value) print(var) file:write(var) row=cur:fetch(row,"a") end file:close() conn:close() env:close()
lua5.2以后的版本,require语句不会自动创建全局变量,所以,需要自己定义一个变量。返回的是一个表。r.mysql()创建一个环境,然后connect函数连接数据库,参数分别是数据库名字,用户名,密码,mysql服务器ip地址(本地是localhost),端口。mysql的默认端口是3306
然后从mytable表中读取数据,通过fetch函数读取返回的结果。