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.