DEV Community

Nicolas OHLIN
Nicolas OHLIN

Posted on

Automatiser l’envoi par mail de données fictives depuis MariaDB avec un script exécuté chaque minute

Étape 1 : Installer MariaDB:

sudo apt update
sudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadb

Enter fullscreen mode Exit fullscreen mode

Sécuriser l’installation: suivre toutes les étapes nécessaires.
sudo mysql_secure_installation

Étape 2 : Créer la base, la table et insérer de fausses données

Via le shell accéder à MariaDB
sudo mariadb -u root -p

CREATE DATABASE store_db;
USE store_db;

CREATE TABLE ventes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    produit VARCHAR(100),
    quantite INT,
    prix_unitaire DECIMAL(6,2),
    date_vente DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Insertion de quelques données fictives
INSERT INTO vente (produit, quantite, prix_unitaire)
VALUES 
('Clavier', 2, 29.99),
('Souris', 5, 19.90),
('Écran', 1, 199.99);

Enter fullscreen mode Exit fullscreen mode

Étape 3 : Script Python pour lire la table et envoyer par mail

Installez les bibliothèques nécessaires :
pip install mysql-connector-python

Ecrire le script en python:

#!/usr/bin/env python3

import mysql.connector
import smtplib
from email.mime.text import MIMEText
from datetime import datetime

# Connexion à la base MariaDB
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="VOTRE_MDP",  
    database="ventes_db"
)

cursor = conn.cursor()
cursor.execute("SELECT * FROM vente ORDER BY date_vente DESC LIMIT 5")
ventes = cursor.fetchall()

# Formatage du message
message = " Dernières ventes enregistrées :\n\n"
for v in ventes:
    message += f"Produit : {v[1]} | Qté : {v[2]} | Prix : {v[3]} € | Date : {v[4]}\n"

cursor.close()
conn.close()

# Configuration email
EMAIL_SENDER = "votre.email@gmail.com"
EMAIL_RECEIVER = "destinataire@example.com"
EMAIL_PASSWORD = "votre_mdp_app"
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587

msg = MIMEText(message)
msg['Subject'] = f"
 Rapport ventes - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
msg['From'] = EMAIL_SENDER
msg['To'] = EMAIL_RECEIVER

# Envoi de l’email
try:
    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
        server.starttls()
        server.login(EMAIL_SENDER, EMAIL_PASSWORD)
        server.send_message(msg)
    print(" Email envoyé avec succès")
except Exception as e:
    print(f" Erreur : {e}")

Enter fullscreen mode Exit fullscreen mode

Rendre le script exécutable :
chmod +x /home/user/mail_vente.py

Ajouter à la crontab :

crontab -e
min hr dom month dow /usr/bin/python3 /home/user/mail_vente.py>>/home/user/mail_vente.log 2>&1
Enter fullscreen mode Exit fullscreen mode

Conclusion

Grâce à Python et crontab, vous avez désormais un système capable de vous informer par mail de l’état de votre base de données. A la prochaine pour un nouveeau tutoriel rapide.

Top comments (0)