L'informatique est utilisée de nos jours pour le traitement de quantités importantes de données : commerce en ligne, bases de données pour des dizaine de milliers d'articles du commerce en ligne, des millions de clients, de commandes, etc.
Les systèmes de gestion de base de données sont des programmes hautement spécialisés pour effectuer ce genre de tâches mais nous allons voir dans ce cours qu'il est facile de mettre en œuvre les opérations de base de ces système dans un langage de programmation comme Python.
Les bases de données relationnelles (BDR) qui contiennent un ensemble de tables contenant des données reliées entre elles (on parle de relations) et le langage SQL permettant d'effectuer des requêtes dans ces tables ne seront étudiées qu'en terminale NSI.
Le module natif csv de Python permet d'importer les données depuis un fichier CSV.
Voici un script permettant de charger le fichier countries.csv avec des points-virgules comme délimitations.
On obtient une liste avec beaucoup de répétitions. Pour supprimer tous ces doublons, il est possible de transformer cette liste en un ensemble (appelé set en anglais).
La fonction native
Par exemple, si l'on veut trier les pays selon leur superficie : il faut d'abord définir une fonction qui permet d'accéder à la valeur de l'attribut 'area' d'un enregistrement puis retourne le score de l'enregistrement afin qu'il puisse être comparé aux autres et ainsi trier la liste entière.
Les données étant importées sous la forme d'une liste. Fusionner deux tables revient à concaténer deux listes.
La dernière étape est de sauvegarder cette nouvelle liste de dictionnaire dans un nouveau fichier CSV 'nom_fichier.csv',
ce qui est réalisable avec le script suivant :
Pour fusionner deux tables, il est impératif qu'elles aient au moins un attribut en commun qui servira de pont entre elles.
Cet attribut doit permettre d'identifier de façon unique un enregistrement : on l'appelle un identifiant.
Il existe plusieurs façon de joindre des tables :
Exemple :
Nous disposons de deux tables :
Nom | Courriel |
---|---|
PICHO | trailin@new.com |
MARTIN | rwyt@kitin.com |
KERROUC | kishimoto@kitin.com |
MAS | vovivano@not.com |
Pseudo | Courriel | Orientation politique |
---|---|---|
Naruto | kishimoto@kitin.com | extrème gauche |
AllezLeStade | linkymaster@not.com | droite |
123456789 | milou@not.com | droite |
GenerationM | trailin@new.com | centre |
Tocamélos | rwyt@kitin.com | gauche |
Nom | Courriel | Pseudo | Orientation politique |
---|---|---|---|
PICHO | trailin@new.com | GenerationM | centre |
MARTIN | rwyt@kitin.com | Tocamélos | gauche |
KERROUC | kishimoto@kitin.com | Naruto | extrème gauche |
Nom | Courriel | Pseudo | Orientation politique |
---|---|---|---|
PICHO | trailin@new.com | GenerationM | centre |
MARTIN | rwyt@kitin.com | Tocamélos | gauche |
KERROUC | kishimoto@kitin.com | Naruto | extrème gauche |
MAS | vovivano@not.com | NULL | NULL |
Nom | Courriel | Pseudo | Orientation politique |
---|---|---|---|
KERROUC | kishimoto@kitin.com | Naruto | extrème gauche |
NULL | linkymaster@not.com | AllezLeStade | droite |
NULL | milou@not.com | 123456789 | droite |
PICHO | trailin@new.com | GenerationM | centre |
MARTIN | rwyt@kitin.com | Tocamélos | gauche |
Nom | Courriel | Pseudo | Orientation politique |
---|---|---|---|
PICHO | trailin@new.com | GenerationM | centre |
MARTIN | rwyt@kitin.com | Tocamélos | gauche |
KERROUC | kishimoto@kitin.com | Naruto | extrème gauche |
MAS | vovivano@not.com | NULL | NULL |
NULL | linkymaster@not.com | AllezLeStade | droite |
NULL | milou@not.com | 123456789 | droite |