Bonjour,
Ayant un peu de nostalgie de mon début de carrière dans l'IT comme programmeur (PL1 et IMS DB/DC, et DB2.... pour les anciens à qui ça parle encore...), à l'approche de la retraite, j'ai envie de m'amuser un peu, et ai donc choisi Debian/Pyton pour m'y remettre "pour le fun". Bien sûr, tout n'est pas une évidence, mais ça fait partie du jeu.... Progressivement, j'avance (j'ai mon PC dual Boot Windows/Debian/python3.8
) mais là, je bute sur un sujet "philosophique" où je n'arrive pas à trouver une "bonne" réponse (y compris sur le "net", je ne sais même pas bien où chercher d'ailleurs...) 
Je m'explique: comme premier exercice de taille un peu plus importante, je voudrais me faire un outil de gestion de ma cave à vin (une cave avec un volume en toute modération: c'est juste pour le fun de la programmation
) et je bute sur la question du type de données à utiliser...
un exemple (simplifié): j'aurais besoin de la notion "bouteille" qui aurait comme attributs:
- région (ce qui renvoie vers un référentiel (= table) de régions: Bordeaux, Bourgogne, ...)
- le producteur (ce qui renvoie vers un référentiel (= table) de producteurs avec les coordonnées,..),
- la marque (le nom de la bouteille chez le producteur: Cairanne, Château bidule, etc..)
- l'année de la production
- le nombre de bouteilles qui me restent en cave
etc
Je voudrais donc afficher sur l'écran les bouteilles en stock de toutes les régions, d'une certaine région, d'une certaine année, d'un producteur,... et des combinaisons de tout ça (donc des accès et filtres un peu sur tous les attributs). Or je m'interroge comment "gérer" cette information au niveau du programme:
"à l'époque" j'aurais créé une table SGBDR (donc attributs pour la "bouteille" "à plat" dans une seule table), j'aurais créé une "structure" pour les résultats, et j'aurais filtré via des requêtes et jointures les informations qui m'intéressaient suivant la requête
1) En Python, je me dis il faudrait utiliser listes et/ou dictionnaires... du coup, j'ai plein de possibilités:
a) liste de listes de "bouteilles" contenant les infos sur chaque "bouteille":
[ [région, producteur, marque, année, nombre], [région, producteur, marque, année, nombre], [région, producteur, marque, année, nombre], ...]
b) un dictionnaire avec à chaque fois une liste des infos par "bouteille":
{ bouteille1 : [région, producteur, marque, année, nombre], bouteille2: [région, producteur, marque, année, nombre], bouteille3:....}
c) un dictionnaire avec à chaque fois un dictionnaire pour chaque "bouteille":
{ bouteille1: {région: ..., producteur: ...,....}, bouteille2: {..], ....}
mais du coup,
- je ne vois pas trop comment faire mes filtres et sélections, hormis de construire des boucles qui vont lire bouteille par bouteille et sélectionner ce qu'il me faut (bref, cela ne me parait pas un réel progrès avec ce que j'ai connu il y 30 ans.. mais je n'ai peut-être pas tout vu/compris)
- se pose ensuite la question du stockage (SQL, CSV, Jason,...)
2) et je me dis que le mieux serait quand même d'utiliser la techno "objet" (le but est d'apprendre, il parait que l'objet est un sacré progrès...
), du coup, j'ai encore d'autres possibilités:
a) liste d'objets
[objet_bouteille1, objet_bouteille2,...]
b) dictionnaire d'objets
{key1: objet, key2: objet, ....}
mais avec les mêmes questions qu'en 1...
Donc, chère communauté Python, j'espère que c'est clair, et je suis impatient de lire vos avis éclairés...

Merci d'avance!
Partager