LDAP: couldn't connect to LDAP server
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
restricted:tc-d:tp2:travaux_pratiques_deuxieme_seance_2017 [2017/10/18 16:03] – edauce | restricted:tc-d:tp2:travaux_pratiques_deuxieme_seance_2017 [2018/02/20 10:31] (Version actuelle) – edauce | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
+ | |||
+ | ====== TP 2 : SQL ====== | ||
+ | |||
+ | |||
+ | |||
+ | Nous allons travailler sur une base de données '' | ||
+ | |||
+ | Le schéma relationnel de la base est le suivant : | ||
+ | * **Membre** (__IdMembre__, | ||
+ | * **Biblio** ( __IdBiblio__, | ||
+ | * **Livre** (__IdLivre__, | ||
+ | * **Emprunt** (// | ||
+ | |||
+ | avec : | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Les attributs ou groupes d’attributs soulignés (resp. en italique) correspondent aux clés primaires (resp. étrangères) des relations. | ||
+ | |||
+ | Type des attributs : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ====Partie 1==== | ||
+ | |||
+ | === Executer sqlite3 === | ||
+ | Pour travailler sur sqlite3 et y créer une base de données '' | ||
+ | |||
+ | sqlite3 biblio.db | ||
+ | |||
+ | |||
+ | === Fichier source === | ||
+ | Le fichier {{https:// | ||
+ | |||
+ | Téléchargez ce fichier, et mettez-le dans votre dossier de travail. | ||
+ | |||
+ | Dans un premier temps, ouvrez-le sous geany pour regarder son contenu. Il commence par 4 commandes '' | ||
+ | |||
+ | Ensuite nous avons les 4 '' | ||
+ | |||
+ | === Lecture du fichier source === | ||
+ | |||
+ | Revenez dans le terminal : | ||
+ | |||
+ | Lancer sqlite3 et tapez '' | ||
+ | |||
+ | Si tout se passe bien, sans erreur : | ||
+ | |||
+ | sqlite> | ||
+ | sqlite> | ||
+ | |||
+ | === Schéma de la base === | ||
+ | |||
+ | Maintenant vous pouvez | ||
+ | la commande '' | ||
+ | |||
+ | sqlite> | ||
+ | | ||
+ | Vous pouvez également vérifier la structure des tables avec '' | ||
+ | |||
+ | sqlite> | ||
+ | |||
+ | === Requêtes et commandes d' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Pour afficher le contenu d'une table, exécutez la requête | ||
+ | |||
+ | sqlite> SELECT * FROM Livre ; | ||
+ | | ||
+ | <note tip> | ||
+ | * Les requêtes SQL se terminent par un point virgule '';'' | ||
+ | * Les commandes d' | ||
+ | </ | ||
+ | |||
+ | * Recommencez après avoir exécuté la commande '' | ||
+ | * Faites de même avec les commandes : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <note tip> | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | </ | ||
+ | |||
+ | === Insertion de valeurs === | ||
+ | |||
+ | Les commandes d' | ||
+ | |||
+ | <code sql> | ||
+ | INSERT INTO Membre VALUES (2, ' | ||
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | INSERT INTO Livre VALUES (' | ||
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | INSERT INTO Livre VALUES (' | ||
+ | </ | ||
+ | |||
+ | <code sql> | ||
+ | INSERT INTO Biblio VALUES (77, NULL, ' | ||
+ | </ | ||
+ | ====Partie 2==== | ||
+ | |||
+ | Voici pour vous entraîner une série de requêtes à effectuer sur la base. | ||
+ | Il est recommandé de mettre ces requêtes dans un fichier '' | ||
+ | |||
+ | 1. Liste des auteurs présents dans la base. | ||
+ | |||
+ | 2. Liste des livres | ||
+ | |||
+ | 3. Liste des livres de Victor Hugo appartenant à la catégorie 5 (Théâtre). | ||
+ | |||
+ | 4. Liste des livres de Jacques Prévert ou de Gilbert Sinoué. | ||
+ | |||
+ | 5. Liste des membres n’habitant pas à Marseille. | ||
+ | |||
+ | 6. Liste des livres (titre, auteur) empruntés au moins une fois. | ||
+ | |||
+ | 7. Liste des livres jamais empruntés. | ||
+ | |||
+ | 8. Liste des membres qui ont emprunté Ruy Blas. | ||
+ | |||
+ | 9. Liste des livres empruntés par des habitants du 8ème arrondissement de Marseille. | ||
+ | |||
+ | 10. Quels sont les livres qui ont été empruntés au cours de la période allant du 16/01/10 au 15/06/10? | ||
+ | |||
+ | 11. Donner la liste des livres se trouvant à St Charles ou à République. | ||
+ | |||
+ | 12. Quels sont les numéros des membres qui ont emprunté au moins un livre à Marseille pour une durée supérieure ou égale à 7 jours ? | ||
+ | |||
+ | 13. Donner la liste des membres (nomMembre) qui n'ont pas emprunté ' | ||
+ | |||
+ | 14. Donner la liste des membres (nomMembre) qui ont emprunté à la fois ‘Contes pour les enfants pas sages’ et ‘Avicenne’. | ||
+ | |||
+ | 15. Liste des membres (nomMembre) qui n'ont emprunté ni ‘Contes pour les enfants pas sages’, ni ‘Avicenne’. | ||
+ | |||
+ | 16. Quels sont les numéro et noms des membres qui ont emprunté au moins un livre écrit par Victor Hugo mais qui n’ont jamais emprunté de livre écrit par Jacques Prévert ? | ||
+ | |||
+ | 17. Donner le nombre de livres par auteur. | ||
+ | |||
+ | 18. Pour chaque catégorie de livre, donner le nombre de livres empruntés au moins une fois. | ||
+ | |||
+ | 19. Donner pour chaque livre (titreLivre, | ||
+ | |||
+ | 20. Donner la liste des livres (titreLivre, | ||
+ | |||
+ | 21. Donner les noms des membres qui ont emprunté plus de deux livres. | ||
+ | |||
+ | 22. Quels sont les nom et adresse complète des membres qui ont empruntés tous les livres de Victor Hugo ? | ||
+ | |||
+ | ==== Partie 3 ==== | ||
+ | |||
+ | L' | ||
+ | * La librairie '' | ||
+ | * La librairie '' | ||
+ | |||
+ | Nous allons maintenant essayer de " | ||
+ | |||
+ | Commencez par importer les librairies mentionnées : | ||
+ | |||
+ | <code python> | ||
+ | import sqlite3 | ||
+ | import pandas | ||
+ | </ | ||
+ | |||
+ | Déplacez le fichier '' | ||
+ | |||
+ | Essayez maintenant le commande d' | ||
+ | |||
+ | <code python> | ||
+ | db = sqlite3.connect(' | ||
+ | </ | ||
+ | | ||
+ | <note important> | ||
+ | Attention, si le fichier '' | ||
+ | </ | ||
+ | |||
+ | Pour pouvoir exécuter des requêtes dans la base, il faut créer un " | ||
+ | <code python> | ||
+ | c = db.cursor() | ||
+ | </ | ||
+ | Vous pouvez maintenant exécuter des requêtes à l'aide de ce curseur: | ||
+ | | ||
+ | | ||
+ | Il est conseillé d' | ||
+ | |||
+ | <code python> | ||
+ | try: | ||
+ | c.execute(" | ||
+ | except sqlite3.OperationalError: | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | Une fois la requête exécutée sans erreur, les réponses sont disponibles à l'aide de la commande '' | ||
+ | |||
+ | <code python> | ||
+ | reponses = c.fetchall() | ||
+ | for r in reponses: | ||
+ | print r | ||
+ | </ | ||
+ | |||
+ | === Mise en forme avec pandas === | ||
+ | |||
+ | Les réponses apparaissent sous forme de tuples, ce qui manque un peu de lisibilité. Pour améliorer la mise en forme des résultats, nous utiliserons la librairie '' | ||
+ | |||
+ | <code python> | ||
+ | with db: | ||
+ | requete = " | ||
+ | reponse = pandas.io.sql.read_sql(query, | ||
+ | print (reponse) | ||
+ | </ | ||
+ | | ||
+ | === A faire === | ||
+ | |||
+ | Reprenez les requêtes de la partie précédente, | ||
+ | |||