7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 1/32
Python: Manipulationd’Informations
02/05/2013
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 2/32
Sommaire
1. Introduction
2. Bases de données
3. Systèmes de gestion de bases de données4. Grammaire SQL
5. Python et les bases de données : le module « SQLite »
6. Stockage d'objets : le module « Pickle »
7. Copie d'informations : le module « copy »
02/05/2013 Manipulation d'Informations 2
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 3/32
1. Introduction
Calculs importants:
– Grande masse de données (Google : 24 Po/j en 2009)
– Stockage dans une mémoire secondaire (disque,
réseau, cloud) – Lecture/manipulation facile d’informations
– Longévité des données (plusieurs dizaines d'années)
=> Bases de données
02/05/2013 Manipulation d'Informations 3
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 4/32
2. Bases de Données
• Ensemble de données informatisées• Multiple utilisateurs
• Organisée selon un modèle de données
•
Stockées dans une mémoire• SGBD : Logiciel de gestion de BD (mémorisation/manipulation)
02/05/2013 Manipulation d'Informations 4
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 5/32
3. Système de Gestion de Bases deDonnées
• SGBD : Créer, manipuler, interroger une BD
• Fonctionnalités :
– Partage des données (accès concurrent)
– Manipulation des données
– Contrôle de la redondance
– Optimisation des accès aux données (requêtes SQL)
– Confidentialité des données (droits & modes d’accès)
– Intégrité des données (cohérence)
02/05/2013 Manipulation d'Informations 5
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 6/32
Les SGBD relationnels
• SGBD relationnels : fondés sur le modèle relationnel
• Modèle relationnel : décrit une BD relationnelle (BDR)
•
BDR : ensemble de relations (tables)• Relation : ensemble d’attributs (colonnes)
• Ligne : enregistrement (occurrence) de données
• Une relation est identifiée par une clé primaire
• Basé sur l’algèbre relationnelle
02/05/2013 Manipulation d'Informations 6
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 7/32
Clé primaire – Clé étrangère(contraintes d’intégrité référentielle)
• Clé primaire : identifie de façon unique chaque occurrence
= attribut (ou ensemble d’attributs) dont deux occurrences
différentes ne prennent pas la même valeur
• Clé étrangère : attribut d’une table permettant de la relier àune autre table via sa clé primaire
=> Utiliser une clé primaire d’une table A dans une table B
Employé( NumEmp , NomEmp, AdrEmp, NumSer )
Service( NumSer , LibelléSer, LocalisationSer)
02/05/2013 Manipulation d'Informations 7
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 8/32
Schéma d’une Relation (table)
02/05/2013 Manipulation d'Informations 8
PRODUIT(NUMERO PRODUIT, NOM PRODUIT, QUANTITE STOCKEE)Nom relation Attribut clé (souligné) Attributs non clé
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 9/32
Opérateurs Relationnels
L’algèbre relationnel : 2 types d’opérateurs • les opérateurs unaires qui portent sur UNE relation
• … binaires … DEUX relations
02/05/2013 Manipulation d'Informations 9
Les opérateurs unaires
(sur une table)
SélectionProjection
Complément
Les opérateurs binaires
(sur deux tables)
Union
Intersection
Différence
Division
Produits
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 10/32
Opérateurs Relationnels Unaires
02/05/2013 Manipulation d'Informations 10
•
Sélection (Select (R,E) ou σ(E)R) = supprimer des occurrences de larelation R qui ne satisfont pas l'expression de la sélection E
• Projection (Proj Y(R) ou πY(R)) = supprimer le sous-ensemble Yd'attributs d’une relation
1/ Sélection des commandes passées après octobre
2/ Projection sur la colonne Date
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 11/32
Opérateurs Relationnels Binaires
02/05/2013 Manipulation d'Informations 11
• Union = la fusion de 2 relations ayant les mêmes attributs
• Intersection = fournit les occurrences présentent dans les 2relations ayant les mêmes attributs
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 12/32
Langage de Requêtes SQL
• Langage standard pour les SGBD relationnels
• Un langage structuré de requêtes : définition, interrogation,
manipulation de données• Langage de définition de données LDD: création, modification
ou suppression des objets (requêtes CREATE, ALTER, DROP)
•
Langage de manipulation de données LMD: extraction, ajout, mise à jour, suppression d’enregistrements (requêtes SELECT,INSERT, UPDATE, DELETE)
02/05/2013 Manipulation d'Informations 12
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 13/32
SQL: Définition de Données
• Création d’une table :
CREATE TABLE nom(<col> <type>, <col> <type>PRIMARY KEY (<col>));
• Modification de la table :
ALTER TABLE nom [alter spécifications]
- Ajouter une colonne : ADD <colonne> <type> ;
– La supprimer : DROP <colonne> ;
– La renommer : CHANGE <ancien_nom> <nouveau> <type> ;
– Changer son type de données : MODIFY <colonne>< nouveau_type>;
• Suppression d’une table :
DROP TABLE nom de table ;
02/05/2013 Manipulation d'Informations 13
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 14/32
SQL: Manipulation de Données
• Sélection & projection :
SELECT nom colonne FROM table Projection
[WHERE condition]; Sélection
•
Insertion d’enregistrements : INSERT INTO table(col1, col2) VALUES (valeur1, valeur1) ;
• Suppression d’enregistrements :
DELETE FROM table WHERE condition;
• Mise à jour de la table :
UPDATE table SET colonne = valeur WHERE condition ;
02/05/2013 Manipulation d'Informations 14
d f
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 15/32
SQL: conditions et fonctionsarithmétiques
Condition : <opérande><opérateur><opérande>Opérandes : colonne, valeur (num, alphanum, date), expression(arithmétique (+ - * /) ou fonctions
SUM(n): somme des valeurs de n
AVG(n) : moyenne des valeurs de n (hors valeurs nulles)
COUNT(*) : nombre d’enregistrements renvoyés par la requête
MAX(n) (MIN(n)): valeur maximum (ou minimum) de n
02/05/2013 Manipulation d'Informations 15
numériques de comparaison spécifiques
Opérateurs + - * / !=, >, >=, <, <= IN,NOT IN
IS [NOT] NULL
BETWEEN, LIKE (%)
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 16/32
Jointure Naturelle
02/05/2013 Manipulation d'Informations 16
•
Les informations dont nous avons besoin se trouvent dansplusieurs tables?
La jointure naturelle : met en relation deux (ou plus) tables
=> combiner les colonnes de plusieurs tablesSELECT * FROM table1, table2
WHERE table1.colonne = table2.colonne;
Employé( NumEmp , NomEmp, AdrEmp , NumSer )
Service( NumSer , LibelléSer, LocalisationSer)
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 17/32
Exemple de SGBD Relationnel: SQLite
• Bibliothèque logicielle implémentant un moteur de BDRaccessible par SQL
• SQLite stocke les données dans des fichiers
•
Les types supportés :
02/05/2013 Manipulation d'Informations 17
Types SQLite Types Python
NULL None
INTEGER int, long
REAL float
TEXT str, unicode
BLOB buffer
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 18/32
Exercice:
02/05/2013 Manipulation d'Informations 18
4-SQLite_exo1.txt
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 19/32
Exercice: 4-SQLite_exo1.txt
02/05/2013 Manipulation d'Informations 19
1. Lancer sqlite3
2. Afficher le nom des tables présentes dansphysics.db
3. Créer la table « Etudiant » ayant pourattributs : NumEtu, NomEtu, AdrEtu
4. Insérer des enregistrements
5. Afficher le contenu de la table6. Interroger la base de données7. Supprimer la table
http://www.sqlite.org/download.html Precompiled Binaires > command-line shell$ sqlite3SQLite version 3.7.9 2011-11-01 00:52:41
P th t B d D é
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 20/32
Python et Bases de Données:
Architecture
Créer, manipuler, interroger une BD à l'aide d'unprogramme écrit en python
Exemple : Effectuer des calculs automatiques importantssur les données d'une BD et stocker les résultats dans lamême BD
02/05/2013 Manipulation d'Informations 20
ProgrammePython SGBD
API /Driver
SQL
Base deDonnées
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 21/32
SQLite et Python
1) Importer le module & se connecter à la BDimport sqlite3
conn=sqlite3.connect('example.db')
2) Créer un curseur afin d'exécuter des requêtes SQL
c = conn.cursor()
3) Passer en argument les requêtes à la méthode executede l'objet cursor
c.execute("requête SQL")c.executemany("requête SQL")
02/05/2013 Manipulation d'Informations 21
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 22/32
Exercice:
02/05/2013 Manipulation d'Informations 22
5/SQLite_Python.py
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 23/32
SQLite et Python
4) Afficher le résultats d'une requête SQL
• Fetchone() : résultat récupéré en une ligne unique (tuple)
• Fetchmany(n) : récupère les n prochains résultats (liste)
• Fetchall() : récupère toutes les lignes de résultat de la
requete (liste)5) Validation de modifications
conn.commit()
6) Annulation des dernières modifications
conn.rollback()
7) Fermer la connexion
conn.close()
02/05/2013 Manipulation d'Informations 23
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 24/32
Exercice:
02/05/2013 Manipulation d'Informations 24
5/SQLite_Python.py
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 25/32
2. Objets Persistents
Etape A
02/05/2013 Manipulation d'Informations 26
• Objets “conservés” entre deux exécutions
stockage consultation
Etape B
• Pickle
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 26/32
Pickle
pickle
.dump(obj,file)
.load(file)
02/05/2013 Manipulation d'Informations 27
Sérialisation
“pickling” (dump)
Dé-sérialisation
“unpickling” (load)
flux de bytes (e.g., stocké dans un fichier)
objet “live”
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 27/32
Pickle: Problèmes courants
02/05/2013 Manipulation d'Informations 28
• Dé-synchronisation: – Attributs supplémentaires utilisés dans
une méthode, mais non présents dansl’objet sauvegardé!
• Limite de récursion:
RuntimeError: maximum recursiondepth exceeded
Augmenter dynamiquement laprofondeur maximale
sys.setrecursionlimit()
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 28/32
Exercice: Pickle
02/05/2013 Manipulation d'Informations 29
1. pickle_ex.py
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 29/32
3. Copy vs Deepcopy
02/05/2013 Manipulation d'Informations 30
copy. x: objet
.copy(x) “shallow
copy”
p copie x et insère desréférences aux originaux, si
possible
.deepcopy(x)
“deep copy”
copie récursive de tous lessous-objets
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 30/32
Deepcopy: problèmes potentiels ?
• Self-Références (in)directes: – Boucle récursives
• Duplication de structures qui devraient être
partagées: – État non cohérent
02/05/2013 Manipulation d'Informations 31
Problèmes évités par:
- “mémo” d’objets déjà copiés
- développeur peut définir ses propres fonctionx.__copy__(self) et x.__deepcopy__(self)
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 31/32
Exercice: DeepCopy
02/05/2013 Manipulation d'Informations 32
1. copy_vs_deepcopy.py2. Supplémentaire :
deepcopy_advanced.py
7/23/2019 Manipulation d Informations
http://slidepdf.com/reader/full/manipulation-d-informations 32/32
8.Exercices supplémentaires
02/05/2013 Manipulation d'Informations 34
Top Related