From 868f682a48afcfd1686e85b4075f2c20787922a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Di=C3=A9val=20Flavien?= Date: Fri, 19 Apr 2024 14:49:55 +0200 Subject: [PATCH] fixed minors bugs --- data/Livre.csv | 28 ++++---- database.py | 3 +- main.py | 2 +- operationOnDataBase.py | 149 +++++++++++++++++++++++++++++++++++++++-- test.py | 90 ------------------------- test2.py | 11 --- 6 files changed, 160 insertions(+), 123 deletions(-) diff --git a/data/Livre.csv b/data/Livre.csv index 1c08e2c..c5ee130 100644 --- a/data/Livre.csv +++ b/data/Livre.csv @@ -1,19 +1,19 @@ "ISBN";"Titre";"Auteur";"Description";"Note";"Date de parution";"Statut";"Genre";"Format";"Prix";"Point de vente";"Editeur" -"1041834365";"Notre-Dame de Paris ";"1";"En 1831, Victor Hugo réinvente le Moyen Âge et élève un monument littéraire aussi durable que l'œuvre de pierre qui l'a inspiré. Sous la silhouette noire et colossale de la cathédrale fourmille le Paris en haillons des truands de la Cour des Miracles. Image de grâce et de pureté surgie de ce cauchemar, la bohémienne Esméralda danse pour le capitaine Phoebus et ensorcelle le tendre et difforme Quasimodo, sonneur de cloches de son état. Pour elle, consumé d'amour, l'archidiacre magicien Claude Frollo court à la damnation.... ";"5.5";"1881-00-00";"disponible";"Historique";"Poche";"4.4";"Place Charles de Gaulle à Chabeuil (Drôme)";"Pocket Jeunesse" +"1041834365";"Notre-Dame de Paris ";"1";"En 1831, Victor Hugo réinvente le Moyen Âge et élève un monument littéraire aussi durable que l'œuvre de pierre qui l'a inspiré. Sous la silhouette noire et colossale de la cathédrale fourmille le Paris en haillons des truands de la Cour des Miracles. Image de grâce et de pureté surgie de ce cauchemar, la bohémienne Esméralda danse pour le capitaine Phoebus et ensorcelle le tendre et difforme Quasimodo, sonneur de cloches de son état. Pour elle, consumé d'amour, l'archidiacre magicien Claude Frollo court à la damnation.... ";"5.5";"1881-01-01";"disponible";"Historique";"Poche";"4.4";"Place Charles de Gaulle à Chabeuil (Drôme)";"Pocket Jeunesse" "2010056426";"ABC contre Poirot";"23";"Un lieu, une date : l'assassin annonce ses crimes et lance un défi à Hercule Poirot. L'assassin est-il un maniaque des annuaires téléphoniques et des indicateurs de chemins de fer ? Celui qui signe A.B.C. tue par ordre alphabétique. Le lecteur croit en savoir plus que le détective lui-même, mais l'auteur est diabolique. Bien malin celui qui aura le dernier mot !";"5.8";"1936-01-06";"disponible";"Policier";"Poche";"7.99";"31 rue Madier de Montjau 26000 Valence";"Gallimard" "2017010090";"Miss Peregrine et les enfants particuliers - Hollow City Tome 2";"31";"Miss Peregrine, changée en oiseau, est prisonnière de son état, suite à l’attaque des Estres. Les enfants particuliers n’ont plus qu’un espoir : trouver une Ombrune susceptible de rendre à la directrice de l’orphelinat sa forme humaine. Après avoir essuyé une tempête, le petit groupe d’enfants échoue sur une rive de Grande-Bretagne, alors que la Seconde Guerre fait rage. Aussitôt pris en chasse par des Estres, ils se réfugient, in extremis, dans une boucle temporelle. Là, vit une ménagerie d’animaux singuliers. Parmi eux,... ";"8.4";"2017-02-01";"hors stock";"Fantastique";"Grand Format";"10.99";"17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence ";"Bayard Jeunesse" -"2070415732";"Fahrenheit 451";"25";"451 degrés Fahrenheit représentent la température à laquelle un livre s'enflamme et se consume.Dans cette société future où la lecture, source de questionnement et de réflexion, est considérée comme un acte antisocial, un corps spécial de pompiers est chargé de brûler tous les livres, dont la détention est interdite pour le bien collectif.Montag, le pompier pyromane, se met pourtant à rêver d'un monde différent, qui ne bannirait pas la littérature et l'imaginaire au profit d'un bonheur immédiatement consommable. Il devient...";"7.2";"1953-00-00";"emprunté";"Science-fiction";"Grand Format";"7.9";"ZC le Plateau des Couleures +"2070415732";"Fahrenheit 451";"25";"451 degrés Fahrenheit représentent la température à laquelle un livre s'enflamme et se consume.Dans cette société future où la lecture, source de questionnement et de réflexion, est considérée comme un acte antisocial, un corps spécial de pompiers est chargé de brûler tous les livres, dont la détention est interdite pour le bien collectif.Montag, le pompier pyromane, se met pourtant à rêver d'un monde différent, qui ne bannirait pas la littérature et l'imaginaire au profit d'un bonheur immédiatement consommable. Il devient...";"7.2";"1953-01-01";"emprunté";"Science-fiction";"Grand Format";"7.9";"ZC le Plateau des Couleures 26000 VALENCE 07.57.59.94.95";"Gallimard" -"2070450333";"L'aiguille creuse";"27";"Avec L'Aiguille creuse, Maurice Leblanc offre enfin à Arsène Lupin un adversaire à sa mesure. Et pourtant, avec son visage rose de jeune fille et ses cheveux en brosse, Isidore Beautrelet n'est qu'un lycéen, prêt à passer le baccalauréat. Saura-t-il expliquer l'étrange crime commis au château d'Ambrumésy ? Comprendre les liens qui unissent le gentleman cambrioleur à la belle Mlle de Saint-Véran ? Déchiffrer le secret de l'Aiguille creuse, dont seuls les rois de France possédaient la clé ? Publié en 1909, L'Aiguille creuse...";"5";"1909-00-00";"disponible";"Policier";"Poche";"3";"12, place des clercs 26000 Valence";"Gallimard" -"2070541290";"Harry Potter - Tome 2 : Harry potter et la chambre des secrets";"2";"Cette deuxième aventure d'Harry Potter mêle avec génie humour, mystère et frisson. L'intrigue savamment ficelée et pleine de rebondissements inattendus envoûte littéralement le lecteur de la première à la dernière page. Un régal !";"10";"1999-11-00";"hors stock";"Fantastique";"Grand Format";"22.5";"12, place des clercs 26000 Valence";"Gallimard" +"2070450333";"L'aiguille creuse";"27";"Avec L'Aiguille creuse, Maurice Leblanc offre enfin à Arsène Lupin un adversaire à sa mesure. Et pourtant, avec son visage rose de jeune fille et ses cheveux en brosse, Isidore Beautrelet n'est qu'un lycéen, prêt à passer le baccalauréat. Saura-t-il expliquer l'étrange crime commis au château d'Ambrumésy ? Comprendre les liens qui unissent le gentleman cambrioleur à la belle Mlle de Saint-Véran ? Déchiffrer le secret de l'Aiguille creuse, dont seuls les rois de France possédaient la clé ? Publié en 1909, L'Aiguille creuse...";"5";"1909-01-01";"disponible";"Policier";"Poche";"3";"12, place des clercs 26000 Valence";"Gallimard" +"2070541290";"Harry Potter - Tome 2 : Harry potter et la chambre des secrets";"2";"Cette deuxième aventure d'Harry Potter mêle avec génie humour, mystère et frisson. L'intrigue savamment ficelée et pleine de rebondissements inattendus envoûte littéralement le lecteur de la première à la dernière page. Un régal !";"10";"1999-11-01";"hors stock";"Fantastique";"Grand Format";"22.5";"12, place des clercs 26000 Valence";"Gallimard" "2070543587";"Harry Potter - Tome 4 : Harry potter et la coupe de feu";"2";"Après un horrible été chez les Dursley, Harry Potter entre en quatrième année au collège de Poudlard. À quatorze ans, il voudrait simplement être un jeune sorcier comme les autres, retrouver ses amis Ron et Hermione, assister avec eux à la Coupe du Monde de Quidditch, apprendre de nouveaux sortilèges et essayer des potions inconnues. Une grande nouvelle l'attend à son arrivée : la tenue à Poudlard d'un tournoi de magie entre les plus célèbres écoles de sorcellerie. Déjà les spectaculaires délégations étrangères font leur entrée... Harry se réjouit. Trop vite. Il va se trouver plongé au coeur des événements les plus dramatiques qu'il ait jamais eu à affronter. -Envoûtant, drôle, bouleversant, ce quatrième tome est le pilier central des aventures de Harry Potter.";"10";"2000-11-00";"disponible";"Fantastique";"Grand Format";"14.5";"Place Charles de Gaulle à Chabeuil (Drôme)";"Gallimard" -"2070556859";"Harry Potter - Tome 5 : Harry potter et l'ordre du phenix ";"2";"À quinze ans, Harry entre en cinquième année à Poudlard, mais il n'a jamais été si anxieux. L'adolescence, la perspective des examens et ces étranges cauchemars... Car Celui-Dont-On-Ne-Doit-Pas-Prononcer-Le-Nom est de retour. Le ministère de la Magie semble ne pas prendre cette menace au sérieux, contrairement à Dumbledore. La résistance s'organise alors autour de Harry qui va devoir compter sur le courage et la fidélité de ses amis de toujours... ";"10";"2003-12-00";"disponible";"Fantastique";"Grand Format";"12.99";"Place Charles de Gaulle à Chabeuil (Drôme)";"Gallimard" -"2070572676";"Harry Potter - Tome 6 : Harry potter et le prince de sang-mele ";"2";"Harry, Ron et Hermione entrent en sixième année à Poudlard où ils vont vivre leur dernière année avant la majorité qui est fixée, chez les sorciers, à l'âge de dix-sept ans. Des événements particulièrement marquants vont contribuer à faire passer Harry du statut d'adolescent à celui d'homme. Ce tome, sur fond de guerre contre un Voldemort plus puissant que jamais, se révèle plus sombre que les précédents. Secrets, alliances et trahisons conduisent aux événements les plus dramatiques qu'Harry ait eu à affronter. Mais, en... ";"10";"2005-10-00";"disponible";"Fantastique";"Grand Format";"10.99";"31 rue Madier de Montjau +Envoûtant, drôle, bouleversant, ce quatrième tome est le pilier central des aventures de Harry Potter.";"10";"2000-11-01";"disponible";"Fantastique";"Grand Format";"14.5";"Place Charles de Gaulle à Chabeuil (Drôme)";"Gallimard" +"2070556859";"Harry Potter - Tome 5 : Harry potter et l'ordre du phenix ";"2";"À quinze ans, Harry entre en cinquième année à Poudlard, mais il n'a jamais été si anxieux. L'adolescence, la perspective des examens et ces étranges cauchemars... Car Celui-Dont-On-Ne-Doit-Pas-Prononcer-Le-Nom est de retour. Le ministère de la Magie semble ne pas prendre cette menace au sérieux, contrairement à Dumbledore. La résistance s'organise alors autour de Harry qui va devoir compter sur le courage et la fidélité de ses amis de toujours... ";"10";"2003-12-01";"disponible";"Fantastique";"Grand Format";"12.99";"Place Charles de Gaulle à Chabeuil (Drôme)";"Gallimard" +"2070572676";"Harry Potter - Tome 6 : Harry potter et le prince de sang-mele ";"2";"Harry, Ron et Hermione entrent en sixième année à Poudlard où ils vont vivre leur dernière année avant la majorité qui est fixée, chez les sorciers, à l'âge de dix-sept ans. Des événements particulièrement marquants vont contribuer à faire passer Harry du statut d'adolescent à celui d'homme. Ce tome, sur fond de guerre contre un Voldemort plus puissant que jamais, se révèle plus sombre que les précédents. Secrets, alliances et trahisons conduisent aux événements les plus dramatiques qu'Harry ait eu à affronter. Mais, en... ";"10";"2005-10-01";"disponible";"Fantastique";"Grand Format";"10.99";"31 rue Madier de Montjau 26000 Valence";"Gallimard" "2070615367";"Harry Potter - Tome 7 : Harry potter et les reliques de la mort";"2";"«Envers et contre tout» est une caractéristique-clé chez J.K. Rowling. Paradoxalement, c'est lorsqu'elle a continué à écrire avec une énergie, une passion, un engagement inentamés, en particulier à partir du tome 4 - alors qu'elle était devenue l'une des femmes les plus célèbres et riches au monde, et que chaque suite était attendue par des dizaines de millions de lecteurs du monde entier - , qu'elle force le plus l'admiration. Elle accomplit la mission qu'elle s'est donnée sans faillir, sans jamais décevoir. L'ambition de... ";"10";"2007-10-27";"emprunté";"Fantastique";"Grand Format";"15.99";"17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence @@ -32,19 +32,19 @@ Sainte-Beuve. Les Trois Mousquetaires… notre seule épopée depuis le Moyen Âge. Roger Nimier. -Les Trois Mousquetaires...";"3.5";"1844-00-00";"disponible";"Historique";"Grand Format";"6.9";"ZC le Plateau des Couleures +Les Trois Mousquetaires...";"3.5";"1844-01-01";"disponible";"Historique";"Grand Format";"6.9";"ZC le Plateau des Couleures 26000 VALENCE 07.57.59.94.95";"Hachette" -"2266282395";"Le Seigneur Des Anneaux - Tome 1";"3";"Aux temps reculés de ce récit, la Terre est peuplée d'innombrables créatures : les Hobbits, apparentés à l'Homme, les Elfes et les Nains vivent en paix. Une paix menacée depuis que l'Anneau de Pouvoir, forgé par Sauron de Mordor, a été dérobé. Or cet anneau est doté d'un pouvoir maléfique qui confère à son détenteur une autorité sans limite et fait de lui le Maître du monde. Sauron s'est donc juré de le reconquérir...";"6.1";"1954-00-00";"disponible";"Fantastique";"Poche";"8.74";"17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence +"2266282395";"Le Seigneur Des Anneaux - Tome 1";"3";"Aux temps reculés de ce récit, la Terre est peuplée d'innombrables créatures : les Hobbits, apparentés à l'Homme, les Elfes et les Nains vivent en paix. Une paix menacée depuis que l'Anneau de Pouvoir, forgé par Sauron de Mordor, a été dérobé. Or cet anneau est doté d'un pouvoir maléfique qui confère à son détenteur une autorité sans limite et fait de lui le Maître du monde. Sauron s'est donc juré de le reconquérir...";"6.1";"1954-01-01";"disponible";"Fantastique";"Poche";"8.74";"17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence ";"Gallimard" -"2700238931";"La Quête d'Ewilan - Tome 1 : D'un monde à l'autre ";"14";"La vie de Camille, adolescente surdouée, bascule quand elle pénètre accidentellement dans l’univers de Gwendalavir avec son ami Salim. Là des créatures, les Ts’liches, la reconnaissent sous le nom d’Ewilan et tentent de la tuer. Originaire de ce monde, elle est l’unique héritière d’un don prodigieux, le Dessin, qui peut s’avérer une arme fatale dans la lutte de son peuple pour reconquérir pouvoir, liberté et dignité. Épaulée par le maître d’armes de l’empereur et un vieil... ";"10";"2003-00-00";"disponible";"Fantastique";"Grand Format";"8.4";"ZC le Plateau des Couleures +"2700238931";"La Quête d'Ewilan - Tome 1 : D'un monde à l'autre ";"14";"La vie de Camille, adolescente surdouée, bascule quand elle pénètre accidentellement dans l’univers de Gwendalavir avec son ami Salim. Là des créatures, les Ts’liches, la reconnaissent sous le nom d’Ewilan et tentent de la tuer. Originaire de ce monde, elle est l’unique héritière d’un don prodigieux, le Dessin, qui peut s’avérer une arme fatale dans la lutte de son peuple pour reconquérir pouvoir, liberté et dignité. Épaulée par le maître d’armes de l’empereur et un vieil... ";"10";"2003-01-01";"disponible";"Fantastique";"Grand Format";"8.4";"ZC le Plateau des Couleures 26000 VALENCE 07.57.59.94.95";"Rageot" "2700238958";"La Quête d'Ewilan - Tome 2 : Les frontières de glace ";"14";"Revenus dans l’Empire de Gwendalavir, Ewilan et Salim partent avec leurs compagnons aux abords des Frontières de Glace pour libérer les Sentinelles. Ils repoussent en chemin les attaques de guerriers cochons, d’ogres et de mercenaires du Chaos, alliés des Ts’liches, mais se découvrent un peuple allié : les Faëls. Salim se lie d’amitié avec une marchombre, Ellana, dont les pouvoirs le fascinent ; tandis que, face au maître d’armes, Ewilan assoit son autorité et affermit... ";"10";"2003-06-17";"disponible";"Fantastique";"Grand Format";"8.4";"17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence ";"Rageot" -"2700238974";"La Quête d'Ewilan - Tome 3 : L'île du destin ";"14";"Après avoir libéré les Sentinelles, Ewilan et Salim rejoignent la Citadelle des Frontaliers avec leurs compagnons. Là, Ewilan découvre la retraite de Merwyn, le plus grand des dessinateurs. Il leur conseille de regagner l’autre monde et de convaincre Mathieu, le frère d’Ewilan, de les suivre en Gwendalavir. À leur retour, ils embarquent pour les îles Alines afin de délivrer les parents d’Ewilan, retenus par Eléa, la sentinelle traîtresse…";"10";"2004-00-00";"disponible";"Fantastique";"Grand Format";"8.4";"31 rue Madier de Montjau +"2700238974";"La Quête d'Ewilan - Tome 3 : L'île du destin ";"14";"Après avoir libéré les Sentinelles, Ewilan et Salim rejoignent la Citadelle des Frontaliers avec leurs compagnons. Là, Ewilan découvre la retraite de Merwyn, le plus grand des dessinateurs. Il leur conseille de regagner l’autre monde et de convaincre Mathieu, le frère d’Ewilan, de les suivre en Gwendalavir. À leur retour, ils embarquent pour les îles Alines afin de délivrer les parents d’Ewilan, retenus par Eléa, la sentinelle traîtresse…";"10";"2004-01-01";"disponible";"Fantastique";"Grand Format";"8.4";"31 rue Madier de Montjau 26000 Valence";"Rageot" "2700256506";"Le pacte des Marchombres - Tome 1 : Ellana";"14";"Ellana, jeune fille d'un autre monde, va faire ses premiers pas d'apprentie sur la route des Marchombres. Elle rencontre Jilano Alhuïn qui l'initie aux secrets de la guilde. Grand prix Roman jeunesse Lire-SNCF 2007. ";"10";"2006-10-25";"hors stock";"Fantastique";"Grand Format";"15.99";"Place Charles de Gaulle à Chabeuil (Drôme)";"Gallimard" "2747037916";"Miss Peregrine et les enfants particuliers - Tome 1";"31";"Jacob Portman, 16 ans, écoute depuis son enfance les récits fabuleux de son grand-père. Ce dernier, un juif polonais, a passé une partie de sa vie sur une minuscule île du pays de Galles, où ses parents l'avaient envoyé pour le protéger de la menace nazie. Le jeune Abe Portman y a été recueilli par Miss Peregrine Faucon, la directrice d'un orphelinat pour enfants « particuliers ». Selon ses dires, Abe y côtoyait une ribambelle d'enfants doués de capacités surnaturelles, censées les protéger des « Monstres ».Un soir, Jacob... ";"9";"2012-05-31";"disponible";"Fantastique";"Grand Format";"27";"31 rue Madier de Montjau @@ -59,8 +59,8 @@ Du coup, soit je trahis ma parole et je dévoile un secret vieux de vingt-cinq s ";"9.1";"2014-05-02";"emprunté";"Aventure";"Grand Format";"22.74";"17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence ";"Pocket Jeunesse" -"2812623985";"Les autodafeurs - Ma soeur est une artiste de guerre Tome 2";"5";"Le Grand Jeu ne fait que commencer mais il a déjà coûté cher à la famille Mars. Après avoir perdu son père, ce sont les grand- parents d'Auguste qui sont morts en affrontant les Autodafeurs et leur mère est toujours dans le coma suite à sa blessure à la tête. Auguste et Césarine n'ont jamais été aussi seuls mais avec l'aide de DeVergy et des membres de la Confrérie, ils vont devoir se préparer et se battre car les Autodafeurs n'ont jamais été aussi près de parvenir à leur fin... Trilogie culte vendue à plus de 110 000... ";"9.4";"2016-00-00";"hors stock";"Aventure";"Grand Format";"16.5";"31 rue Madier de Montjau +"2812623985";"Les autodafeurs - Ma soeur est une artiste de guerre Tome 2";"5";"Le Grand Jeu ne fait que commencer mais il a déjà coûté cher à la famille Mars. Après avoir perdu son père, ce sont les grand- parents d'Auguste qui sont morts en affrontant les Autodafeurs et leur mère est toujours dans le coma suite à sa blessure à la tête. Auguste et Césarine n'ont jamais été aussi seuls mais avec l'aide de DeVergy et des membres de la Confrérie, ils vont devoir se préparer et se battre car les Autodafeurs n'ont jamais été aussi près de parvenir à leur fin... Trilogie culte vendue à plus de 110 000... ";"9.4";"2016-01-01";"hors stock";"Aventure";"Grand Format";"16.5";"31 rue Madier de Montjau 26000 Valence";"Rageot" -"2890746623";"Les Chevaliers d'Emeraude - Tome 1 : Le feu dans le ciel ";"16";"Se déroulant dans un monde oublié et dans des temps lointains, cette épopée tumultueuse raconte l'histoire de Kira, l'enfant mauve conçue lors du viol de la Reine Fan de Shola par Amecareth, l'Empereur Noir. Les Chevaliers d'Emeraude devront mener de durs combats pour protéger cette petite fille, afin que s'accomplisse la prophétie qui verra la destruction d'Amecareth. Apprenant que l'Empereur Noir s'apprête à envahir le continent de nouveau, le Roi d'Emeraude, soucieux de protéger tous les peuples d'Enkidiev, ressuscite un... ";"7.9";"2003-03-00";"disponible";"Fantastique";"Poche";"10.99";"Place Charles de Gaulle à Chabeuil (Drôme)";"Wellan Inc" +"2890746623";"Les Chevaliers d'Emeraude - Tome 1 : Le feu dans le ciel ";"16";"Se déroulant dans un monde oublié et dans des temps lointains, cette épopée tumultueuse raconte l'histoire de Kira, l'enfant mauve conçue lors du viol de la Reine Fan de Shola par Amecareth, l'Empereur Noir. Les Chevaliers d'Emeraude devront mener de durs combats pour protéger cette petite fille, afin que s'accomplisse la prophétie qui verra la destruction d'Amecareth. Apprenant que l'Empereur Noir s'apprête à envahir le continent de nouveau, le Roi d'Emeraude, soucieux de protéger tous les peuples d'Enkidiev, ressuscite un... ";"7.9";"2003-03-01";"disponible";"Fantastique";"Poche";"10.99";"Place Charles de Gaulle à Chabeuil (Drôme)";"Wellan Inc" "9782070518425";"Harry Potter, tome 1 : Harry Potter à l'école des sorciers -";"2";"Pour et Mrs Dursley, qui habitaient au 4, Privet Drive, avaient toujours affirmé avec la plus grande fierté qu'ils étaient parfaitement nor­maux, merci pour eux. Jamais quiconque n'aurait imaginé qu'ils puissent se trouver impliqués dans quoi que ce soit d'étrange ou de mystérieux. Ils n'avaient pas de temps à perdre avec des sornettes.";"10";"1998-00-00";"emprunté";"Fantastique";"Poche";"10.99";"12, place des clercs 26000 Valence";"Gallimard" +";"2";"Pour et Mrs Dursley, qui habitaient au 4, Privet Drive, avaient toujours affirmé avec la plus grande fierté qu'ils étaient parfaitement nor­maux, merci pour eux. Jamais quiconque n'aurait imaginé qu'ils puissent se trouver impliqués dans quoi que ce soit d'étrange ou de mystérieux. Ils n'avaient pas de temps à perdre avec des sornettes.";"10";"1998-01-01";"emprunté";"Fantastique";"Poche";"10.99";"12, place des clercs 26000 Valence";"Gallimard" diff --git a/database.py b/database.py index d2cc653..5491032 100644 --- a/database.py +++ b/database.py @@ -79,7 +79,7 @@ def __init__(self, host:str ="localhost", user:str="root", passwd:str="1234", po print("Tables créées avec succès !") else : exit(1) - if tablesLoad != self.list_tables: + if tablesLoad != self.list_tables:#verification des tables print("Erreur : Base de donnée corrompue ! Les tables ne correspondent pas avec le modèle UML attendu, veuillez vérifier vos tables.") print("Tables attendues : ",self.list_tables) print("Tables trouvées : ",tablesLoad) @@ -159,7 +159,6 @@ def loadData(self) -> int: idTable = ["data/Auteur.csv","data/Note.csv","data/Emprunt.csv"] with open(file, 'r', encoding="utf-8") as f: reader = csv.reader(f, delimiter=';') - id = False next(reader) self.cursor = self.db.cursor() for row in reader: diff --git a/main.py b/main.py index eee8611..ccfb185 100644 --- a/main.py +++ b/main.py @@ -18,7 +18,7 @@ def search(db:database.db) -> None: ("Auteur",operationOnDataBase.searchAuteur, db), ("Point de vente",operationOnDataBase.searchPointDeVente, db), ("Editeur",operationOnDataBase.searchEditeur, db)] - if showMenu(choiceAction=choiceListSearch, title= "Que souhaitez vous rechercher ?", defaultChoice=True, question="Veuillez saisir un type de recherche ou un livre : " ) == 2 : + if showMenu(choiceAction=choiceListSearch, title= "Que souhaitez vous rechercher ?", defaultChoice=True, question="Veuillez saisir l'objet de votre recherche ou rechercher un livre : " ) == 2 : return def addElement(db:database.db) -> None: diff --git a/operationOnDataBase.py b/operationOnDataBase.py index 87f59cd..899bfda 100644 --- a/operationOnDataBase.py +++ b/operationOnDataBase.py @@ -44,8 +44,8 @@ def getAnswer(question:str, type:str, content:str, min_int:int=0, max_int:int=5, answer = answer.split('-') answer.reverse() try : - if len(answer) !=3 or int(answer[2]) < 0 or int(answer[2]) > 31 or int(answer[1]) < 0 or int(answer[1]) > 12 or int(answer[0]) < 0 or int(answer[0]) > 2100: - print(f"{content.capitalize()} doit être une date valide. Veuillez réessayer.") + if len(answer) !=3 or int(answer[2]) <= 0 or int(answer[2]) > 31 or int(answer[1]) <= 0 or int(answer[1]) > 12 or int(answer[0]) <= 0 or int(answer[0]) > 2100: + print(f"{content.capitalize()} doit être une date valide (jj/mm/aaaa). Veuillez réessayer. Si vous ne connaissez pas la date exacte, entrez 1.") else : return f"{answer[0]}-{answer[1]}-{answer[2]}" except : @@ -175,7 +175,7 @@ def addLivre(db:database.db): if Auteur == "N": addAuteur(db) continue - Auteur = searchEngine.searchAuteur(Auteur, db, True)[0] + Auteur = searchEngine.searchAuteur(Auteur, db, True) break except : print("Désolé, mais aucun auteur n'a été trouvé pour ce livre.")#proposer d'en ajouter @@ -187,6 +187,8 @@ def addLivre(db:database.db): continue else : return + if len(Auteur) == 1: + Auteur = list(Auteur[0]) print(f"Vous avez selectionné l'auteur : {Auteur[2]} {Auteur[1]}") Description = getAnswer("Entrez une description pour le livre : ", "str", "La description", 0, 1000) if Description == None: return @@ -206,7 +208,9 @@ def addLivre(db:database.db): PointDeVente = getAnswer("Entrez le nom du point de vente du livre : ", "str", "Le point de vente", 1, 50) if PointDeVente == None: return try : - PointDeVente = searchEngine.searchPointDeVente(PointDeVente, db, True)[0] + PointDeVente = searchEngine.searchPointDeVente(PointDeVente, db, True) + if len(PointDeVente) == 1: + PointDeVente = PointDeVente[0] break except : print("Désolé, mais aucun point de vente n'a été trouvé pour ce livre.") @@ -223,7 +227,9 @@ def addLivre(db:database.db): Editeur = getAnswer("Entrez le nom de l'éditeur du livre : ", "str", "L'éditeur", 1, 50) if Editeur == None: return try : - Editeur = searchEngine.searchEditeur(Editeur, db, True)[0] + Editeur = searchEngine.searchEditeur(Editeur, db, True) + if len(Editeur) == 1: + Editeur = Editeur[0] break except : print("Désolé, mais aucun éditeur n'a été trouvé pour ce livre.") @@ -638,6 +644,109 @@ def searchAuteur(db:database.db): except Exception as e: print(f"Une erreur est survenue lors de la recherche du point de vente :{e}, ligne : {e.__traceback__.tb_lineno}") +def filterLivre(livres:list, operation:str,db:database.db)-> list: + """ This function filters the books. + Args: + livres (list): The list of books. + operation (str): The operation to perform. + db (database.db): The database object. + Returns: + list: The filtered list of books. + """ + try : + result = [] + if operation == "auteur": + recherche = getAnswer("Saisir un auteur pour appliquer le filtre :", "str", "L'auteur", 1, 50) + if recherche == None: return None + auteur = searchEngine.searchAuteur(recherche, db, onlyOne=True) + if result == None: + print("Oups, aucun auteur n'a été trouvé pour cette recherche. Par conséquent, aucun filtre n'a été appliqué.") + return None + if len(auteur) == 1: + auteur = auteur[0] + for i in range(len(livres)): + if livres[i][2] == auteur[0]: + result.append(livres[i]) + elif operation == "genre": + recherche = getAnswer("Saisir un genre pour appliquer le filtre :", "enum", "Le genre",enum=["Historique","Romantique","Policier","Science-fiction","Fantastique","Aventure","Biographique","Autobiographique","Épistolaire","Thriller","Tragédie","Drame","Absurde","Philosophique","Politique","Légendes & Mythes","Lettres personnelles","Voyages","Journal intime","Bandes dessinées","Documentaires","Religieux"]) + if recherche == None: return None + for i in range(len(livres)): + if livres[i][7] == recherche: + result.append(livres[i]) + elif operation == "format": + recherche = getAnswer("Saisir un format pour appliquer le filtre :", "enum", "Le format", enum = ["Poche","Grand Format","E-book & numérique","Manga","Bande Dessinée","Magazine","CD","DVD & Blu-ray"]) + if recherche == None: return None + for i in range(len(livres)): + if livres[i][8] == recherche: + result.append(livres[i]) + elif operation == "statut": + recherche = getAnswer("Saisir un statut pour appliquer le filtre :", "enum", "Le statut", enum = ["Disponible", "Emprunté", "hors stock"]) + if recherche == None: return None + for i in range(len(livres)): + if livres[i][6] == recherche: + result.append(livres[i]) + elif operation == "éditeur": + recherche = getAnswer("Saisir un éditeur pour appliquer le filtre :", "str", "L'éditeur", 1, 50) + if recherche == None: return None + editeur = searchEngine.searchEditeur(recherche, db, onlyOne=True) + if result == None: + print("Oups, aucun éditeur n'a été trouvé pour cette recherche. Par conséquent, aucun filtre n'a été appliqué.") + return None + if len(editeur) == 1: + editeur = editeur[0] + for i in range(len(livres)): + if livres[i][11] == editeur[0]: + result.append(livres[i]) + return result + except Exception as e: + print(f"Une erreur est survenue lors du filtrage des livres :{e}, ligne : {e.__traceback__.tb_lineno}") + +def sortLivre(livres:list, operation:str)-> list: + """ This function sorts the books. + Args: + livres (list): The list of books. + operation (str): The operation to perform. + Returns: + list: The sorted list of books. + """ + try : + if operation == "note": + print("Tri par note") + livres.sort(key=lambda x: x[4], reverse=True) + elif operation == "ordre alphabétique": + print("Tri par ordre alphabétique") + livres.sort(key=lambda x: x[1]) + elif operation == "date de parution": + print("Tri par date de parution") + #algo de tri sans utiliser sort : + try : + for i in range(len(livres)): + for j in range(i+1, len(livres)): + if int(str(livres[i][5]).split('-')[0]) > int(str(livres[j][5]).split('-')[0]) :#si l'année est plus grande + livres[i], livres[j] = livres[j], livres[i] + elif int(str(livres[i][5]).split('-')[0]) == int(str(livres[j][5]).split('-')[0]) :#si l'année est la même + if int(str(livres[i][5]).split('-')[1]) > int(str(livres[j][5]).split('-')[1]) :# mais que le mois est plus grand + livres[i], livres[j] = livres[j], livres[i] + elif int(str(livres[i][5]).split('-')[1]) == int(str(livres[j][5]).split('-')[1]) :#si le mois est le même + if int(str(livres[i][5]).split('-')[2]) > int(str(livres[j][5]).split('-')[2]) :#mais que le jour est plus grand + livres[i], livres[j] = livres[j], livres[i] + livres = livres[::-1]#on inverse la liste pour avoir le tri dans l'ordre croissant + except ValueError as e: + print(e, e.__traceback__.tb_lineno) + pass + except Exception as e: + print(f"Une erreur est survenue lors du tri par date de parution :{e}, ligne : {e.__traceback__.tb_lineno}") + print('Résultat du tri par date de parution :') + elif operation == "prix": + print("Tri par prix") + livres.sort(key=lambda x: x[9]) + elif operation == "point de vente": + print("Tri par point de vente") + livres.sort(key=lambda x: x[10]) + return livres + except Exception as e: + print(f"Une erreur est survenue lors du tri des livres :{e}, ligne : {e.__traceback__.tb_lineno}") + def searchLivre(db:database.db, recherche:str = None): """ This function searches for a book in the database. Args: @@ -654,6 +763,36 @@ def searchLivre(db:database.db, recherche:str = None): if input("Voulez-vous lancer une nouvelle recherche ? (Y/N) : ") == "Y": searchLivre(db) return + filtre = ["Tout afficher","Filtrer par auteur", "Filtrer par genre","Filtrer par format", "Filtrer par statut", "Filtrer par éditeur"] + sortResult = ["ordre alphabétique", "note", "date de parution", "prix", "point de vente"] + if len(result) > 1: + print(f"Plusieurs résultats ont été trouvés : comment souhaitez-vous procéder ?") + print("1 : Tout afficher (par défaut)\n2 : Filtrer\n3 : Trier") + entry = input("Veuillez saisir une opération : ").strip() + if entry == "2": + for i in range(len(filtre)): + print(f"{i+1} : {filtre[i]}") + try : + entry = int(input("Veuillez saisir un filtre :").strip().split()[0]) + if entry > 1 and entry <=6: + print(result) + result = filterLivre(result, filtre[entry-1].split()[2],db) + print(result) + if filterLivre == None: + print("Aucun filtre n'a été appliqué.") + except : + pass + elif entry == "3": + for i in range(len(sortResult)): + print(f"{i+1} : Par {sortResult[i]}") + try : + entry = int(input("Veuillez saisir un tri :").strip().split()[0]) + if entry > 1 and entry <=5: + result = sortLivre(result, sortResult[entry-1]) + if sortLivre == None: + print("Aucun tri n'a été appliqué.") + except : + pass print(f"Résultat de la recherche pour '{recherche}' :\n") for i in range(len(result)) : print(f"-----------------------------------") diff --git a/test.py b/test.py index 9005cd7..e69de29 100644 --- a/test.py +++ b/test.py @@ -1,90 +0,0 @@ -Harry Potter - Tome 2 : Harry potter et la chambre des secrets -ISBN : 2070541290 -Auteur: Joanne Rowling [ d͡ʒ -Description : Cette deuxième aventure d'Harry Potter mêle avec génie humour, mystère et frisson. L'intrigue savamment ficelée et pleine de rebondissements inattendus envoûte littéralement le lecteur de la première à la dernière page. Un régal ! -Note : 10.0/10 -Date de parution : 0000-00-00 -Statut : hors stock -Genre : Fantastique -Format : Grand Format -Prix : 22.50 -Point de vente : 12, place des clercs 26000 Valence -Editeur : Gallimard ------------------------------------- -Harry Potter - Tome 4 : Harry potter et la coupe de feu -ISBN : 2070543587 -Auteur: Joanne Rowling [ d͡ʒ -Description : Après un horrible été chez les Dursley, Harry Potter entre en quatrième année au collège de Poudlard. À quatorze ans, il voudrait simplement être un jeune sorcier comme les autres, retrouver ses amis Ron et Hermione, assister avec eux à la Coupe du Monde de Quidditch, apprendre de nouveaux sortilèges et essayer des potions inconnues. Une grande nouvelle l'attend à son arrivée : la tenue à Poudlard d'un tournoi de magie entre les plus célèbres écoles de sorcellerie. Déjà les spectaculaires délégations étrangères font leur entrée... Harry se réjouit. Trop vite. Il va se trouver plongé au coeur des événements les plus dramatiques qu'il ait jamais eu à affronter.Envoûtant, drôle, bouleversant, ce quatrième tome est le pilier central des aventures de Harry Potter. -Note : 10.0/10 -Date de parution : 0000-00-00 -Statut : disponible -Genre : Fantastique -Format : Grand Format -Prix : 14.50 -Point de vente : Place Charles de Gaulle à Chabeuil (Drôme) -Editeur : Gallimard ------------------------------------- -Harry Potter - Tome 5 : Harry potter et l'ordre du phenix -ISBN : 2070556859 -Auteur: Joanne Rowling [ d͡ʒ -Description : À quinze ans, Harry entre en cinquième année à Poudlard, mais il n'a jamais été si anxieux. L'adolescence, la perspective des examens et ces étranges cauchemars... Car Celui-Dont-On-Ne-Doit-Pas-Prononcer-Le-Nom est de retour. Le ministère de la Magie semble ne pas prendre cette menace au sérieux, contrairement à Dumbledore. La résistance s'organise alors autour de Harry qui va devoir compter sur le courage et la fidélité de ses amis de toujours... -Note : 10.0/10 -Date de parution : 0000-00-00 -Statut : disponible -Genre : Fantastique -Format : Grand Format -Prix : 12.99 -Point de vente : Place Charles de Gaulle à Chabeuil (Drôme) -Editeur : Gallimard ------------------------------------- -Harry Potter - Tome 6 : Harry potter et le prince de sang-mele -ISBN : 2070572676 -Auteur: Joanne Rowling [ d͡ʒ -Description : Harry, Ron et Hermione entrent en sixième année à Poudlard où ils vont vivre leur dernière année avant la majorité qui est fixée, chez les sorciers, à l'âge de dix-sept ans. Des événements particulièrement marquants vont contribuer à faire passer Harry du statut d'adolescent à celui d'homme. Ce tome, sur fond de guerre contre un Voldemort plus puissant que jamais, se révèle plus sombre que les précédents. Secrets, alliances et trahisons conduisent aux événements les plus dramatiques qu'Harry ait eu à affronter. Mais, en... -Note : 10.0/10 -Date de parution : 0000-00-00 -Statut : disponible -Genre : Fantastique -Format : Grand Format -Prix : 10.99 -Point de vente : 31 rue Madier de Montjau26000 Valence -Editeur : Gallimard ------------------------------------- -Harry Potter - Tome 7 : Harry potter et les reliques de la mort -ISBN : 2070615367 -Auteur: Joanne Rowling [ d͡ʒ -Description : «Envers et contre tout» est une caractéristique-clé chez J.K. Rowling. Paradoxalement, c'est lorsqu'elle a continué à écrire avec une énergie, une passion, un engagement inentamés, en particulier à partir du tome 4 - alors qu'elle était devenue l'une des femmes les plus célèbres et riches au monde, et que chaque suite était attendue par des dizaines de millions de lecteurs du monde entier - , qu'elle force le plus l'admiration. Elle accomplit la mission qu'elle s'est donnée sans faillir, sans jamais décevoir.L'ambition de... -Note : 10.0/10 -Date de parution : 2007-10-27 -Statut : emprunté -Genre : Fantastique -Format : Grand Format -Prix : 15.99 -Point de vente : 17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence -Editeur : Gallimard ------------------------------------- -Harry Potter - : Harry Potter et le prisonnier d'Azkaban -ISBN : 2070624544 -Auteur: Joanne Rowling [ d͡ʒ -Description : Harry Potter a treize ans. Après des vacances insupportables chez les horribles Dursley, il retrouve ses fidèles amis, Ron et Hermione, pour prendre le train qui les ramène au collège Poudlard. Le monde des gens ordinaires, les Moldus, comme celui des sorciers, est en émoi : aux dernières nouvelles, Sirius Black, un dangereux criminel proche de Voldemort, s'est échappé de la prison d'Azkaban. Les redoutables gardiens de la prison assureront la sécurité du collège Poudlard, car le prisonnier évadé recherche Harry Potter, responsable de l'élimination de son maître. C'est donc sous bonne garde que l'apprenti sorcier fait sa troisième rentrée. Au programme : des cours de divination, la fabrication d'une potion de ratatinage, le dressage des hippogriffes... Mais Harry est-il vraiment à l'abri du danger qui le menace ? -Note : 10.0/10 -Date de parution : 1999-10-19 -Statut : emprunté -Genre : Fantastique -Format : Grand Format -Prix : 9.99 -Point de vente : 17, avenue Victor-Hugo Centre commercial Victor-Hugo - 26000 Valence -Editeur : Gallimard ------------------------------------- -Harry Potter, tome 1 : Harry Potter à l'école des sorciers -ISBN : 9782070518425 -Auteur: Joanne Rowling [ d͡ʒ -Description : Pour et Mrs Dursley, qui habitaient au 4, Privet Drive, avaient toujours affirmé avec la plus grande fierté qu'ils étaient parfaitement nor­maux, merci pour eux. Jamais quiconque n'aurait imaginé qu'ils puissent se trouver impliqués dans quoi que ce soit d'étrange ou de mystérieux. Ils n'avaient pas de temps à perdre avec des sornettes. -Note : 10.0/10 -Date de parution : 0000-00-00 -Statut : emprunté -Genre : Fantastique -Format : Poche -Prix : 10.99 -Point de vente : 12, place des clercs 26000 Valence -Editeur : Gallimard \ No newline at end of file diff --git a/test2.py b/test2.py index f2ba47b..e69de29 100644 --- a/test2.py +++ b/test2.py @@ -1,11 +0,0 @@ -['2017010090', '1', 31, 'Miss Peregrine, changée - en oiseau, est prisonnière de son état, suite à l’attaque des Es - tres. Les enfants particuliers n’ont plus qu’un espoir : trou - ver une Ombrune susceptible de rendre à la directrice de l’orphelinat sa f - orme humaine. Après avoir essuyé une tempête, le petit groupe d’enf - ants échoue sur une rive de Grande-Bretagne, alors que la Seconde Guerre - fait rage. Aussitôt pris en chasse par des Estres, ils se réfugient, in extremis - , dans une boucle temporelle. Là, vit une ménagerie d’animaux singuliers. P - armi eux,... ', 5.0, datetime.date(2017, 2, 1), 'hors stock', 'Policier', 'Grand For - mat', 10.99, 'Place Charles de Gaul - le à Chabeuil (Drôme)', 'Rageot'] \ No newline at end of file