Lua 操作数据库(MySQL)

对于简单的数据操作,我们可以使用文件,但是,有时这些文件操作可能效率不高、可扩展性和功能不够强大。为此,我们通常会切换到数据库。LuaSQL提供从Lua到数据库管理系统的简单接口,它为不同类型的数据库提供支持,包括:SQLite\Mysql\ODBC.

在本章中,我们将涉及在Lua中使用MySQL数据库。我们将使用通用接口,并且可以将此实现移植到其他类型的数据库。首先,让我们看看如何在MySQL中执行操作。

MySQL数据库设置

为了使用下面的示例,我们需要初始化数据库设置。本教程的设置如下。

已经安装了MySQL,默认用户为root和密码为123456。

创建了一个数据库test。

导入MySQL库

我们可以使用一个简单的语句来导入MySQL库,假设您的Lua实现是正确的。mysql = require "luasql.mysql"

建立连接

我们可以通过实例化一个MySQL对象来建立连接,然后为环境创建连接。它如下所示。local env  = mysql.mysql()

local conn = env:connect('test','root','123456')

上面的连接将建立与MySQL的连接。

execute函数

有一个简单的execute函数,它将帮助我们从创建、插入、删除、更新等方面执行数据库操作。如下所示:conn:execute([[ 'MySQLSTATEMENT' ]])

创建表示例

下面显示一个简单的创建表示例。它创建一个表,其中包含两个参数:类型为integer的id和类型为text的name。mysql = require "luasql.mysql"

local env  = mysql.mysql()

local conn = env:connect('test','root','123456')

print(env,conn)

status,errorString = conn:execute([[CREATE TABLE sample2 (id INTEGER, name TEXT);]])

print(status,errorString )

运行上述程序时,将创建一个名为sample的表,其中包含两列,即id和name。MySQL environment (004BB178)MySQL connection (004BE3C8)

0nil

如果有任何错误,您将返回一个错误语句,而不是nil。下面显示一个简单的错误语句。LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"id INTEGER, name TEXT)' at line 1

插入数据库实例conn:execute([[INSERT INTO sample values('11','Raj')]])

更新数据库实例conn:execute([[UPDATE sample3 SET name='John' where id ='12']])

删除数据库实例conn:execute([[DELETE from sample3 where id ='12']])

Select数据实例

在下面的select语句例子中,我们遍历每个行并提取所需的数据。cursor,errorString = conn:execute([[select * from sample]])

row = cursor:fetch ({}, "a")

while row do

print(string.format("Id: %s, Name: %s", row.id, row.name))

-- reusing the table of results

row = cursor:fetch (row, "a")

end

在上面的代码中,conn是一个打开的MySQL连接。在游标的帮助下,您可以循环表并获取所需的数据。

完整的实例mysql = require "luasql.mysql"

local env  = mysql.mysql()

local conn = env:connect('test','root','123456')

print(env,conn)

status,errorString = conn:execute([[CREATE TABLE sample3 (id INTEGER, name TEXT)]])

print(status,errorString )

status,errorString = conn:execute([[INSERT INTO sample3 values('12','Raj')]])

print(status,errorString )

cursor,errorString = conn:execute([[select * from sample3]])

print(cursor,errorString)

row = cursor:fetch ({}, "a")

while row do

print(string.format("Id: %s, Name: %s", row.id, row.name))

row = cursor:fetch (row, "a")

end

-- close everything

cursor:close()

conn:close()

env:close()

当运行上面代码会得到如下输出:MySQL environment (0037B178)MySQL connection (0037EBA8)

0nil

1nil

MySQL cursor (003778A8)nil

Id: 12, Name: Raj

执行事务

事务是确保数据一致性的机制。交易应具有以下四项属性−

原子性—要么一个事务完成,要么根本没有发生任何事情。

一致性—事务必须从一致状态启动,并使系统处于一致状态。

隔离-事务的中间结果在当前事务之外不可见。

持久性—一旦发生事务,即使系统发生故障,其效果也是持久的。

事务以START TRANSACTION开始;以commit或 rollback语句结束。

START TRANSACTION

为了启动一个事务,我们需要在Lua中执行以下语句,假设conn是一个打开的MySQL连接。conn:execute([[START TRANSACTION;]])

Rollback Transaction

我们需要执行以下语句来在执行启动事务后的回滚更改。conn:execute([[ROLLBACK;]])

Commit Transaction

我们需要执行以下语句来提交整个事务。conn:execute([[COMMIT;]])

lua mysql 事务_Lua 操作数据库(MySQL)相关推荐

  1. lua mysql 事务_Lua数据库/MySQL操作

    对于简单的数据操作,我们可以使用文件,但是,有时候这些文件操作效率不高,可扩展性和强大不好.所以我们可能会经常切换到使用数据库. LuaSQL是从Lua一些数据库管理系统的一个简单的接口. LuaSQ ...

  2. cmd中mysql的操作语句,mysql命令行操作大全 mysql命令行操作总结

    摘要 腾兴网为您分享:mysql命令行操作大全 mysql命令行操作总结,悦作业,英语字典,银万财富,小书亭等软件知识,以及webex,过租号,宁夏教育云,百货通,准妈妈课堂,京客隆网上超市,壁纸生成 ...

  3. mysql 事务原子性_数据库事务原子性、一致性是怎样实现的?

    先借用前辈的一句话:数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别. 隔离性分为四个级别: 1读未提交:(Read Uncommitted) 2读已提 ...

  4. python操作mysql事务提交_python关于Mysql操作

    一.安装mysql windows下,直接下载mysql安装文件,双击安装文件下一步进行操作即可, Linux下的安装也很简单,除了下载安装包进行安装外,一般的linux仓库中都会有mysql ,我们 ...

  5. MySQL事务的操作

    事务的作用 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人 员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 据 ...

  6. Mac操作数据库Mysql知识点备忘录

    目录 Mac安装Ubuntu启动Mysql Mac安装Mysql CenterOS Mac Mysql 8和5的密码插件区别 介绍 基础命令操作数据库 远程连接 数据库操作命令 表操作命令 数据操作命 ...

  7. mysql 中caption_Django-Model操作数据库(增删改查、连表结构)(示例代码)

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 基本结构 from django.db importmodelsclassuserinfo(models ...

  8. 测试操作数据库mysql数据库吗_软件测试-MySQL(六:数据库函数)

    一.MySQL函数 1.数学函数 PI()  #返回pi的值(圆周率)默认显示小数位数是6位 FLOOR(x) 返回小于x的最大整数(去掉小数取整) CEILING(x)进一取整 ROUND(x,y) ...

  9. JDBC编程(Java操作数据库 MySQL)

    数据库提供了各种语言版本的API(一组函数/一组类),调用这些API就能操作数据库 而在Java中,又将各种数据库的api再次抽象封装成一套统一的API--JDBC 在中央仓库 Maven Repos ...

最新文章

  1. etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)
  2. VMware 完成 27 亿美元的 Pivotal 收购 | 云原生生态周报 Vol. 34
  3. WCF 第四章 绑定 netMsmqBinding
  4. 2021年,产品经理是否仍在招聘风口?多年火热是否只是泡沫?
  5. mysql innodb 缓存设置_数据库分享一: MySQL的Innodb缓存相关优化
  6. python判断文件或文件夹是否存在
  7. 软考-信息系统项目管理师-项目进度管理
  8. Graph U-Nets 笔记
  9. 爬虫之使用阿布云伪装IP
  10. ASIHTTPRequest类库的简单介绍
  11. [Python爬虫]爬取东方财富网公司公告需要注意的几个问题
  12. 深度学习入门(一)快速建立自己的图片数据集
  13. 甲骨文数据库购买的价格(三)-附x86价格
  14. PyTorch中池化层的padding和ceil_mode参数设置
  15. Windows系统以及浏览器常用快捷键
  16. android面试题2020!年末阿里百度等大厂技术面试题汇总,社招面试心得
  17. 东北大学计算机科学与技术专业考研科目,东北大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  18. 2013年数学建模国赛D题(城市公共自行车系统运行状况)优秀论文.doc
  19. 4位格雷码的顺序编码_格雷码那点事——递归非递归实现
  20. 开源框架ePump简介

热门文章

  1. 电工作业2021电气试验考试题库
  2. Waymo发新车视频庆祝路测里程达1000万英里
  3. 如何快速掌握DDT数据驱动测试?
  4. Intel Realsense D435i Firmware Update
  5. [电源系列]一、BUCK与BOOST电路的占空比计算
  6. 魔方3.02正式版来了
  7. V神·以太坊上的分片
  8. PageHelper 分页插件使用总结
  9. windows - 屏幕抓取技术总结
  10. 使用idea创建web项目