lua连接mysql数据库

作者: adm 分类: go 发布时间: 2022-08-01

环境配置
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函数读取返回的结果。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!