32
7/23/2019 Manipulation d Informations http://slidepdf.com/reader/full/manipulation-d-informations 1/32 Python: Manipulation d’Informations 02/05/2013

Manipulation d Informations

Embed Size (px)

Citation preview

Page 1: Manipulation d Informations

7/23/2019 Manipulation d Informations

http://slidepdf.com/reader/full/manipulation-d-informations 1/32

Python: Manipulationd’Informations 

02/05/2013

Page 2: Manipulation d Informations

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

Page 3: Manipulation d Informations

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

Page 4: Manipulation d Informations

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

Page 5: Manipulation d Informations

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

Page 6: Manipulation d Informations

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

Page 7: Manipulation d Informations

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

Page 8: Manipulation d Informations

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é

Page 9: Manipulation d Informations

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

Page 10: Manipulation d Informations

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

Page 11: Manipulation d Informations

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

Page 12: Manipulation d Informations

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

Page 13: Manipulation d Informations

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

Page 14: Manipulation d Informations

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

Page 15: Manipulation d Informations

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 (%)

Page 16: Manipulation d Informations

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)

Page 17: Manipulation d Informations

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

Page 18: Manipulation d Informations

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 

Page 19: Manipulation d Informations

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 é

Page 20: Manipulation d Informations

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

Page 21: Manipulation d Informations

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

Page 22: Manipulation d Informations

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 

Page 23: Manipulation d Informations

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

Page 24: Manipulation d Informations

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 

Page 25: Manipulation d Informations

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

Page 26: Manipulation d Informations

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”  

Page 27: Manipulation d Informations

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()

Page 28: Manipulation d Informations

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

Page 29: Manipulation d Informations

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

Page 30: Manipulation d Informations

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)

Page 31: Manipulation d Informations

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

Page 32: Manipulation d Informations

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