在上一篇中我们完成了对Mysql数据库的准备工作之后,这一篇我们写一个程序测试一下。
1、Mysql API
在写程序之前,我们先学习一下Mysql数据库常用API的使用:
API | 说明 |
mysql.connet(args) | 连接数据库,参数args是一个Lua表,包含数据库地址、用户名、密码等信息,会返回数据库对象,用于后续操作。 |
db:query(sql) | 执行SQL语句,db表示mysql.connet返回的对象,参数sql表示SQL语句。 |
2、代码测试
我们学完API之后,写个小程序测试数据库能否读写成功。
(1)在
skynet/examples目录下新建一个
main_mysql.lua文件,如果之前有这个文件的话,直接覆盖即可,然后输入如下代码:
local skynet = require "skynet"
local mysql = require "skynet.db.mysql"
skynet.start(function()
--连接数据库
local db=mysql.connect({
host="127.0.0.1",
port=3306,
database="skynet",
user="root",
password="root",
max_packet_size = 1024 * 1024,
on_connect = nil
})
--插入
local res = db:query("insert into message (content) values(\'hello\')")
--查询
res = db:query("select * from message")
--打印
for i,v in pairs(res) do
print ( i," ",v.id, " ",v.content)
end
end)
-
调用 mysql.connect 连接 MySQL ,并使用 skynet数据 库;
-
使用 db:query("insert ...") 向“message”表中插入一条数据,在“content”字段 插入字符串“hello”;
-
使用 db:query("select ...") 查询数据库,将结果保存到 res 中,遍历它并打印出来。
(2)在skynet/examples目录下新建一个config_mysql配置文件:
root = "./"
thread = 8
logger = nil
harbor = 0
start = "main_mysql" -- main script
bootstrap = "snlua bootstrap" -- The service for bootstrap
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua"
lualoader = "lualib/loader.lua"
snax = root.."examples/?.lua;"..root.."test/?.lua"
cpath = root.."cservice/?.so"
-- daemon = "./skynet.pid"
3、代码运行
打开终端输入指令:
- cd skynet
- ./skynet examples/config_mysql
运行结果如下图所示:
这里打印了两个hello是因为我之前已经测试了一次。