日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Lua 数据库访问

發(fā)布時間:2024/4/11 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua 数据库访问 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文主要為大家介紹 Lua 數(shù)據(jù)庫的操作庫:LuaSQL。他是開源的,支持的數(shù)據(jù)庫有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。

本文為大家介紹MySQL的數(shù)據(jù)庫連接。

LuaSQL 可以使用?LuaRocks?來安裝可以根據(jù)需要安裝你需要的數(shù)據(jù)庫驅(qū)動。

LuaRocks 安裝方法:

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

Window 下安裝 LuaRocks:https://github.com/keplerproject/luarocks/wiki/Installation-instructions-for-Windows

安裝不同數(shù)據(jù)庫驅(qū)動:

luarocks install luasql-sqlite3 luarocks install luasql-postgres luarocks install luasql-mysql luarocks install luasql-sqlite luarocks install luasql-odbc

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

Lua 連接MySql 數(shù)據(jù)庫:

require "luasql.mysql"--創(chuàng)建環(huán)境對象 env = luasql.mysql()--連接數(shù)據(jù)庫 conn = env:connect("數(shù)據(jù)庫名","用戶名","密碼","IP地址",端口)--設置數(shù)據(jù)庫的編碼格式 conn:execute"SET NAMES UTF8"--執(zhí)行數(shù)據(jù)庫操作 cur = conn:execute("select * from role")row = cur:fetch({},"a")--文件對象的創(chuàng)建 file = io.open("role.txt","w+");while row dovar = string.format("%d %s\n", row.id, row.name)print(var)file:write(var)row = cur:fetch(row,"a") endfile:close() --關(guān)閉文件對象 conn:close() --關(guān)閉數(shù)據(jù)庫連接 env:close() --關(guān)閉數(shù)據(jù)庫環(huán)境

?

1 篇筆記

  • ???四重人格

    ??xm_***f@qq.com

    5.2 版本之后,require 不再定義全局變量,需要保存其返回值。

    require "luasql.mysql"

    需要寫成:

    luasql = require "luasql.mysql"
  • =====================以上是原文,下面寫一點自己的實戰(zhàn)中的收獲==========================

    1.安裝luaforwindows應該包含了安裝LuaSQL,實戰(zhàn)中只安裝了前者沒有安裝后者,可以成功操作數(shù)據(jù)庫

    2.引入庫的時候使用require "luasql.mysql" 或者使用luasql = require "luasql.mysql"都正確(發(fā)現(xiàn)自己的環(huán)境是lua5.1,原文說5.2以上的必須更改,實際情況待測)

    3.row = cur:fetch({},"a") 中的a是什么意思?沒有領(lǐng)悟

    4.上面代碼中row.id和row.name中id和name代表實際數(shù)據(jù)庫中的字段名字

    5.執(zhí)行事務:

    事務是確保數(shù)據(jù)一致性的機制。事務應該具有以下四個特性:

    • ??? 原子性:事務要么都完成或都沒有任何變化發(fā)生。
    • ??? 一致性:事務必須啟動一個一致的狀態(tài),讓系統(tǒng)處于一致的狀態(tài)。
    • ??? 隔離:一個事務的中間結(jié)果是不是當前事務外可見。
    • ??? 持久性:當一個事務被提交,這個效果是持久的,即使在系統(tǒng)出現(xiàn)故障。

    事務開始START TRANSACTION;和commit或rollback語句結(jié)束。
    開始事務

    為了啟動一個事務,我們需要執(zhí)行在Lua下面執(zhí)行語句,假設conn是一個開放的MySQL連接。

    代碼如下:

    conn:execute([[START TRANSACTION;]])

    回滾事務

    我們需要做執(zhí)行下面的語句來回滾執(zhí)行開始事務后所做的更改。

    代碼如下:

    conn:execute([[ROLLBACK;]])

    提交事務

    我們需要做執(zhí)行以下語句提交執(zhí)行開始事務后所做的更改。

    代碼如下:

    conn:execute([[COMMIT;]])

    我們已經(jīng)在上面知道關(guān)于MySQL和下節(jié)介紹基本的SQL操作。請記住事務,但sqlite3不會再解釋了,但相同的語句在sqlite3也能正常工作。

    ?

    實測代碼如下(正常運行):

    require "luasql.mysql" --luasql = require "luasql.mysql"--創(chuàng)建環(huán)境對象 env = luasql.mysql()--連接數(shù)據(jù)庫 conn = env:connect("msdb","root","root","192.168.0.108",3306)--設置數(shù)據(jù)庫的編碼格式 conn:execute"SET NAMES GB2312"--執(zhí)行數(shù)據(jù)庫操作 cur = conn:execute("select * from action_log")row = cur:fetch({},"a")--文件對象的創(chuàng)建 file = io.open("role.txt","w+");while row dovar = string.format("%s %s %d %s\n", row.actiontime, row.user, row.type, row.info) -- 遍歷字段的值print(var)file:write(var)row = cur:fetch(row,"a") endfile:close() --關(guān)閉文件對象 conn:close() --關(guān)閉數(shù)據(jù)庫連接 env:close() --關(guān)閉數(shù)據(jù)庫環(huán)境

    運行結(jié)果:

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Lua 数据库访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。