Lua - Accès à la base de données

Bonjour, aspirants programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de l'accès aux bases de données en utilisant Lua. En tant que votre professeur de sciences informatiques de quartier, je suis là pour vous guider à travers cette aventure étape par étape. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - nous allons commencer par les bases et progresser pas à pas. Alors, mettez vos casques virtuels, et plongons dans les données !

Lua - Database Access

Configuration de la base de données MySQL

Avant de pouvoir commencer à jouer avec les bases de données en Lua, nous devons préparer notre terrain de jeu. Imaginez cela comme préparer votre cuisine avant de cuisiner un délicieux repas. Dans notre cas, nous allons utiliser MySQL comme notre système de gestion de base de données.

  1. Tout d'abord, assurez-vous d'avoir MySQL installé sur votre ordinateur. Si ce n'est pas le cas, rendez-vous sur le site Web de MySQL et téléchargez la version appropriée pour votre système d'exploitation.

  2. Une fois installé, créez une nouvelle base de données pour nos expériences. Vous pouvez faire cela en utilisant la ligne de commande MySQL ou un outil graphique comme MySQL Workbench.

CREATE DATABASE lua_test;

Super ! Maintenant, notre bac à sable est prêt pour un peu de magie Lua.

Importation de MySQL

Pour utiliser MySQL avec Lua, nous avons besoin d'un outil spécial appelé LuaSQL. C'est comme un traducteur qui aide Lua à communiquer avec MySQL. Importons-le :

local luasql = require "luasql.mysql"

Cette ligne est comme dire à Lua : "Eh, nous allons avoir besoin de tes compétences MySQL pour cette tâche !"

Configuration de la connexion

Maintenant que nous avons présenté Lua à MySQL, installons une connexion. C'est comme composer un numéro de téléphone pour joindre notre base de données :

local env = luasql.mysql()
local con = env:connect("lua_test", "username", "password", "localhost", 3306)

Voici ce qui se passe :

  • Nous créons un environnement (env) pour MySQL.
  • Nous utilisons cet environnement pour nous connecter à notre base de données, en fournissant le nom de la base de données, le nom d'utilisateur, le mot de passe, l'hôte et le port.

Fonction execute

La fonction execute est notre moyen d'envoyer des commandes à la base de données. C'est comme un serveur prenant notre commande dans un restaurant :

function execute(con, sql)
local cur = con:execute(sql)
if cur then
return cur:fetch()
end
return nil
end

Cette fonction prend notre connexion et une commande SQL, l'exécute, et renvoie le résultat.

Exemple de création de table

Créons notre première table ! Imaginez que nous construisons un système de bibliothèque simple :

local sql = [[
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(50),
year INT
)
]]
execute(con, sql)

Cela crée une table nommée 'books' avec des colonnes pour id, title, author et year.

Exemple d'instruction INSERT

Maintenant, ajoutons des livres à notre bibliothèque :

local sql = [[
INSERT INTO books (title, author, year)
VALUES ('The Lua Programming Language', 'Roberto Ierusalimschy', 2016)
]]
execute(con, sql)

Cela ajoute un livre à notre table. C'est comme remplir une carte de bibliothèque pour un nouveau livre.

Exemple d'instruction UPDATE

Oups ! Nous avons fait une erreur. Mettons à jour l'année de notre livre :

local sql = [[
UPDATE books
SET year = 2017
WHERE title = 'The Lua Programming Language'
]]
execute(con, sql)

Cela corrige l'année de publication de notre livre.

Exemple d'instruction DELETE

Retirons un livre de notre bibliothèque :

local sql = [[
DELETE FROM books
WHERE title = 'The Lua Programming Language'
]]
execute(con, sql)

Cela retire le livre spécifié de notre table.

Exemple d'instruction SELECT

Maintenant, voyons les livres que nous avons dans notre bibliothèque :

local sql = "SELECT * FROM books"
local cur = con:execute(sql)
local row = cur:fetch({}, "a")
while row do
print(string.format("%s by %s (%d)", row.title, row.author, row.year))
row = cur:fetch(row, "a")
end

Cela récupère tous les livres et imprime leurs détails.

Exemple complet

Mettons tout cela ensemble dans un exemple complet :

local luasql = require "luasql.mysql"

local env = luasql.mysql()
local con = env:connect("lua_test", "username", "password", "localhost", 3306)

function execute(con, sql)
local cur = con:execute(sql)
if cur then
return cur:fetch()
end
return nil
end

-- Créer la table
execute(con, [[
CREATE TABLE IF NOT EXISTS books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(50),
year INT
)
]])

-- Insérer un livre
execute(con, [[
INSERT INTO books (title, author, year)
VALUES ('The Lua Programming Language', 'Roberto Ierusalimschy', 2017)
]])

-- Sélectionner et imprimer tous les livres
local cur = con:execute("SELECT * FROM books")
local row = cur:fetch({}, "a")
while row do
print(string.format("%s by %s (%d)", row.title, row.author, row.year))
row = cur:fetch(row, "a")
end

con:close()
env:close()

Ce script crée une table, insère un livre, puis imprime tous les livres dans la table.

Et voilà, les amis ! Vous avez appena fait vos premiers pas dans le monde de l'accès aux bases de données avec Lua. Souvenez-vous, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec ces exemples. Qui sait ? Vous pourriez juste créer la prochaine grande application驱动的 par une base de données ! Bon codage !

Méthode Description
require "luasql.mysql" Importe le module MySQL
env:connect() Établit la connexion à la base de données
con:execute() Exécute les instructions SQL
cur:fetch() Récupère les lignes de résultat
START TRANSACTION Commence une transaction
ROLLBACK Annule les modifications d'une transaction
COMMIT Enregistre les modifications d'une transaction
require "luasql.sqlite3" Importe le module SQLite

Credits: Image by storyset