Analyse de notre base de données Moodle !

 

AVERTISSEMENT : vous devez ne travailler qu'avec votre adresse email, et n'êtes NI SENSÉ NI AUTORISÉ à aller voir ce qui concerne les autres utilisateurs de Moodle !

Préparatifs

Pour nous connecter à une base de données, nous allons utiliser le logiciel HeidiSQL : vous pouvez l'installer chez vous sur n'importe quel ordinaeur. A l'école, recherchez en bas à gauche (icone chaméléon) l'application "HeidiSQL" et ouvrez-la.

En bas à gauche de la fenêtre de HeidiSQL, cliquez "Ajouter" et configurez la connexion ainsi : (le mot de passe sera fourni oralement en classe). Attention : le port est désormais 3306

Cliquer "Enregistrer", puis "Ouvrir".

Ensuite choisir la base de donnée "moodle" dans la colonne de gauche. Vous pouvez voir la taille qu'elle occupe, et cela ne comprends pas les ressources (photos, fichiers, vidéos) ni les devoirs rendus par les élèves.

Autres applications utilisables :

Pour utiliser une application en ligne : nous pouvons utiliser la page : https://www.phpmyadminonline.com/index.php?route=/ 

 

Extraction de données(https://mariadb.com/kb/en/sql-statements/)

Le langage utilisé pour consulter les bases de données relationnelles est le langage SQL. Notre base est de type MariaDB, dérivée de MySQL : https://mariadb.com/kb/en/sql-statements/

Voici quelques exemples : vous pouvez les utiliser dans HeidiSQL, en cliquant sur l'onglet et en y plaçant une ou plusieurs requêtes SQL (terminées chacune par un point-virgule). Pour les exécuter, cliquez en haut sur  ou la touche F9.

S'il y a plusieurs requêtes, vous pouvez passer des résultats de l'une à l'autre en cliquant sur les onglets de l'espace en deddous.
Dans les requêtes, au besoin, remplacez <votre adresse email> par votre adresse, laissez bien les guillemets.
Si, dans les résultats d'une requête, un texte est trop long, vous pouvez double cliquer sur le texte et le faire défiler, ou sur l'icône  pour le voir en entier. 

    • pour trouver votre id dans la table moodle.mdl_user :
      SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` = '<votre adresse email>';
    • pour trouver vos messages envoyés dans la table moodle.mdl_messages à partir de votre id :
      SELECT * FROM `moodle`.`mdl_messages` WHERE `useridfrom` = <votre id>;
    • pour trouver juste vos messages envoyés dans la table moodle.mdl_messages à partir de votre id :
      SELECT `smallmessage` FROM `moodle`.`mdl_messages` WHERE `useridfrom` = <votre id>;
    • pour trouver tous vos messages envoyés et à qui avec une belle date ! :
      SELECT `id`, `conversationid`, DATE_ADD('1970-1-1 00:00:00', INTERVAL `timecreated` SECOND) as date, (SELECT `email` FROM `moodle`.`mdl_user` WHERE `id` = (SELECT `userid` FROM `moodle`.`mdl_message_conversation_members` WHERE (`conversationid` = `moodle`.`mdl_messages`.`conversationid`) AND (`userid` != `useridfrom`)))'email destinataire', `smallmessage` FROM `moodle`.`mdl_messages` WHERE `useridfrom` = (SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` = '<votre adresse email>' );
  •  
    • pour connaître l'historique de vos IP de connexion :
      SELECT `ip` FROM `moodle`.`mdl_logstore_standard_log` WHERE `userid` = (SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` = '<votre adresse email>' );
      et pour compter les lignes : faire SELECT COUNT(*) à la place de SELECT `ip`
      ou pour n'avoir que les 10 dernières lignes du résultat, ajouter ceci à la fin : ORDER BY `id` DESC LIMIT 10; (on peut aussi ordonner par `timestamp`)
    • pour connaître l'historique de vos IP de connexion, lors de chaque changement, pour les dix dernières nouvelles IP utilisées, avec la date :
      SELECT MIN(id), `ip`, DATE_ADD('1970-1-1 00:00:00', INTERVAL `timecreated` SECOND) as date FROM `moodle`.`mdl_logstore_standard_log` WHERE `userid` = (SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` = '<votre adresse email>' ) GROUP BY `ip` ORDER BY `id` DESC LIMIT 10;
      pour aller plus loin - > afficher l'intitulé de la page affichée lors de l'utilisation de chaque adresse IP affichée ! Pour cela, aller voir les colonnes disponibles dans la table `mdl_logstore_standard_log`. C'est facile.

Petite variante : https://sql.sh/cours/where/like

Astuce : pour contrôler l'adresse email retenue et traitée avec le "LIKE" (voire celles), vous pouvez ajouter une ligne de seconde requête : SELECT `email` FROM `moodle`.`mdl_user` WHERE `email` LIKE '%<morceau de l'adresse email>%'

 

Utilisation de Python

Remarque : chez vous, si vous utilisez "Spyder", il faut ajouter le module pour le langage SQL de MySQL / MariaDB : dans une console, taper dans une console ou invite de commande ou terminal : "pip install --user mysql.connector". Fermez Spyder, puis rouvrez-le.

Programme simple : enregistrez-le dans un fichier texte moodle_mes_messages_V1.py, et exécutez-le dans Spyder (ou dans la page : https://trinket.io/python3)

Créez un fichier Google Doc dans lequel vous stockez les différents programmes avec un titre chacun ...), en voici un : SNT-Chapitre_4-Mes_programmes (en créer une copie personnelle).

import mysql.connector as mysql
 
db = mysql.connect(

    host = "moodle.lyceestendhal.it",
    port = 3306,   # ou 3306 depuis sa salle de classe
    user = "moodle_guest",
    passwd = "<mot de passe>",
    database = "moodle"
)
print(db)
cursor = db.cursor()
cursor.execute("SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` = '<votre adresse email>';")
for row in cursor:
    print(row)

 

Travail à faire : enregistrez vos programmes qui fonctionnent dans des fichiers !!! NE LES PERDEZ PAS, vous en aurez besoin dans les futures activités et en évaluation !

    • Exécution de moodle_mes_messages_V1.py : Exécutez le programme en remplaçant les champs en vert.
    • Version 2 :  moodle_mes_messages_V2.py : Modifiez le programme pour qu'il demande au début à l'utilisateur l'adresse email recherchée avec l'instruction python "input" et la stocke dans une variable "adresse", et l'insère ensuite dans la requête. Testez.
      Aide pour les plus faibles :
      exemple d'insertion avec une variable email contenant l'adresse email (par exemple grace à un input()) :
      cursor.execute("SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` = '" + email + "';")
      ou encore avec uen variable avec le début de l'adresse :
      cursor.execute("SELECT `id` FROM `moodle`.`mdl_user` WHERE `email` LIKE '%" + debut_email + "%';")
    • Version 3 :  moodle_mes_messages_V3.py : Modifiez le programme pour que l'on n'ait pas à taper le "@lyceestendhal.it" (sans utiliser le "LIKE"). Il y a deux solutions évidentes ! ... Testez.
    • Version 4 :  moodle_mes_messages_V4.py : Modifiez le programme pour qu'il exécute l'exemple pour trouver vos 10 derniers messages envoyés et à qui, avec une belle date. Testez.
    • Version 5 :  moodle_mes_messages_V5.py : Modifiez le programme pour qu'il exécute l'exemple pour trouver l'historique de vos IP de connexion, lors de chaque changement, pour les dix dernières nouvelles IP utilisées, avec la date. Testez.

 

Zuletzt geändert: Mittwoch, 26. März 2025, 06:23