Retour aux projets

Application Python de gestion d'une bibliothèque

06/02/26 → 10/03/26

Projet transversal : application en Python, utilisable dans le terminal, pour gérer la bibliothèque d'une école de sorcellerie : comptes et rôles, catalogue de grimoires, emprunts et retours, et réservation de salles par les professeurs, avec une base MySQL.

Python POO MySQL mysql-connector phpMyAdmin

Contexte

Projet transversal réalisé de février à mars 2026. Le sujet : développer une application de gestion de bibliothèque. Pour le rendre plus vivant, nous l'avons transposé dans l'univers d'une école de sorcellerie, avec ses « grimoires », ses élèves, ses professeurs et sa direction. L'application fonctionne dans le terminal et s'appuie sur une base de données MySQL.

Objectifs

  • Gérer des comptes avec plusieurs rôles (élève, professeur, administrateur) et des droits différents
  • Gérer le catalogue de livres et la recherche par titre ou par auteur
  • Gérer les emprunts et les retours en tenant compte des exemplaires disponibles
  • Permettre aux professeurs de réserver des salles sur un créneau
  • Organiser le code proprement, en séparant l'interface et l'accès aux données

Réalisation

  • Architecture : code organisé en modèles (utilisateurs, livres, emprunts, réservations de salles), un contrôleur qui gère tous les menus, et un module unique de connexion à la base
  • Base de données : tables des livres, des emprunts, des salles et des réservations, avec clés étrangères, contraintes d'unicité (ISBN) et statuts d'emprunt
  • Comptes : création, consultation, modification, suppression et recherche d'utilisateurs, avec un menu différent selon le rôle à la connexion
  • Emprunts : vérification de la disponibilité, refus d'un même livre emprunté deux fois, date de retour calculée à un mois, mise à jour du nombre d'exemplaires et verrouillage de la ligne pendant l'emprunt pour éviter les conflits
  • Salles : recherche des salles libres sur un créneau (en détectant les chevauchements d'horaires), réservation réservée aux rôles autorisés, consultation et annulation
  • Robustesse : requêtes paramétrées et gestion des erreurs (doublons, problèmes de connexion)

Compétences mobilisées

  • Gérer le patrimoine informatique : conception et création de la base de données et de ses contraintes
  • Répondre aux incidents et aux demandes : gestion des erreurs et des cas particuliers (livre indisponible, créneau déjà pris, doublons)
  • Travailler en mode projet : découpage de l'application en modules et avancement par fonctionnalité
  • Organiser son développement professionnel : apprentissage de Python et de la connexion à une base MySQL depuis ce langage

Captures d'écran

À compléter : ajouter ici les captures du projet (dossier src/screen projets).

Bilan

Ce projet m'a permis de retrouver en Python les principes appris en PHP : séparation des responsabilités, classes d'accès aux données, requêtes paramétrées. Les règles métier, comme le contrôle des exemplaires ou la détection des créneaux qui se chevauchent, m'ont obligée à bien réfléchir aux requêtes SQL.

Pour aller plus loin, il faudrait hacher les mots de passe (la bibliothèque bcrypt était prévue mais pas encore utilisée), sortir les identifiants de connexion à la base du code, et ajouter une interface graphique ou web à la place du terminal.