IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

identifier structure de données au format json


Sujet :

Python

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 288
    Points : 113
    Points
    113
    Par défaut identifier structure de données au format json
    Bonjour,

    Je cherche à faire passer des données récupérées au format json dans une base de données (un table, pour faire simple).
    Le premier grand problème est que je n'ai aucune indication, préalable à l'exécution de mon programme (une fois fonctionnel), sur la structure des données json récupérées.

    Ce serait bien gentil de bien vouloir m'indiquer un moyen me permettant d'identifier la structure de mes données afin de pouvoir créer la table (BD) avec la même structure (encore pour faire simple en supposant qu'il n'y a pas d'imbrications).

    Vous remerciant d'avance pour vôtre intérêt

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par medchok Voir le message
    Ce serait bien gentil de bien vouloir m'indiquer un moyen me permettant d'identifier la structure de mes données afin de pouvoir créer la table (BD) avec la même structure (encore pour faire simple en supposant qu'il n'y a pas d'imbrications).
    Ce genre de chose n'existe pas (en dehors de cas triviaux).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par medchok Voir le message
    Le premier grand problème est que je n'ai aucune indication, préalable à l'exécution de mon programme (une fois fonctionnel), sur la structure des données json récupérées.
    Sans même parler de l'incongruité de cet état de fait (généralement un donneur d'ordre sait ce qui passe dans ses tuyaux, ou au pire sait ce qu'il voudrait qu'il passe), ce problème reste incontournable.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 288
    Points : 113
    Points
    113
    Par défaut
    Merci pour vôtre intérêt et vos interventions et réflexions.

    Je dois juste vous dire que c'est bel et bien une situation réelle où le programme en question devra recevoir des données multi-sources et multi-structures (non toujours définies, même par source) et les basculer vers une BD où il ajoutera, si besoin est, un certain nombre de champs.

    Merci encore pour vos réponses

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Si vraiment tu n'as aucun support commun permettant d'unifier le tout, comme par exemple "toutes les datas auront un nom et un prénom", alors dans ce cas là, la seule solution est de stocker en bdd la data reçue "telle quelle".
    Une table par exemple "reception" contenant la date de réception, éventuellement l'émetteur, plus d'autres champs d'identifications de ton cru, plus le flux reçu sans tenter de le "rétro-ingeniérer" car cela n'est pas possible.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Citation Envoyé par medchok Voir le message
    Merci pour vôtre intérêt et vos interventions et réflexions.

    Je dois juste vous dire que c'est bel et bien une situation réelle où le programme en question devra recevoir des données multi-sources et multi-structures (non toujours définies, même par source) et les basculer vers une BD où il ajoutera, si besoin est, un certain nombre de champs.

    Merci encore pour vos réponses
    A mon travail, nous sommes confrontés à ce cas de figure : beaucoup de sources différentes récupérées en JSON et on doit travailler ces données.

    Nous avons choisi d'utiliser une base de données par source afin de limiter les champs inutiles d'une source à l'autre. Et nous conservons dans chaque base le JSON reçu.

    Peut être qu'une base de données par source est too much pour votre besoin (pas le nôtre en tous cas), mais vous devriez peut être revoir votre manière de stocker vos données.

    Ca nous est déjà arrivé de "tailler" dans un champ, revoir sa longueur max à la volée si c'était nécessaire en recevant de nouvelles données. Mais créer des nouveaux champs...

    Sinon, au cas où vous auriez besoin de traiter beaucoup de champs dans vos JSON et que vous voudriez rapidement connaître le type de champs à créer dans votre future base de données, il y a un site internet permettant d'identifier les champs d'un contenu de fichier JSON et surtout, le typage de chacun d'eux.

    Ce site est utilisé pour générer automatiquement des classes s'appuyant sur pydantic mais ça peut aussi vous permettre de préparer votre modèle de future table. Ca vaut ce que ça vaut.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {
        "titre_album":"Abacab",
        "groupe":"Genesis",
        "annee":1981,
        "genre":"Rock"
    }
    Génèrera automatiquement la classe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from __future__ import annotations
     
    from pydantic import BaseModel
     
     
    class Model(BaseModel):
        titre_album: str
        groupe: str
        annee: int
        genre: str
    Si vous devez reprendre les noms de champs tels quels pour la table, vous les avez, ainsi que leur typage.

    JSON to Pydantic

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par medchok Voir le message
    Je dois juste vous dire que c'est bel et bien une situation réelle où le programme en question devra recevoir des données multi-sources et multi-structures (non toujours définies, même par source) et les basculer vers une BD où il ajoutera, si besoin est, un certain nombre de champs.
    Une solution a éventuellement explorer est côté base de données non-relationnelles: on pousse les JSON dans un gros tas musclé en disques et en unités centrales pour faire des query.
    Une autre solution est à chercher du côté des ETL qui permettent de réaliser un mapping facilement.

    Dans tous le cas, vous n'en êtes pas à programmer quoi que ce soit avec Python (mais à définir les composants clefs d'une application en cours de conception).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour
    Citation Envoyé par medchok Voir le message
    recevoir des données multi-sources et multi-structures (non toujours définies, même par source) et les basculer vers une BD où il ajoutera, si besoin est, un certain nombre de champs.
    Pour moi, demande vraiment pas claire, si la source json n'est même pas assez, comment ton programme (et nous) peut deviner ? te reste à écrire l'algorithme "devin" ?
    Ou, alors la demande est de simplement faire un programme interactif de conversion ?

    Que peut-on faire des datas si on ne connait pas la stucture ? en fait rien à part de la sauvegarde (alors il faut le dire et la demande est 1000 fois plus simple), sinon puisque l'on ignore la stucture, il sera impossible de faire des requêtes sur ces tables

    Certaines bases de données peuvent gérer le json en natif et même faire des requetes "json" (mais il faut quand même connaitre la structure json pour faire une requête, ce qui ne semble clairement pas être le cas avec cette demande...)

    Existe de nombreux "outils" (un donné par Arioch) pour convertir un json en un fichier de type (par exemple, puisque Go est un langage typé, il est normal de déclarer la structure du json avant même compilation), il est bien sûr assez simple d'écrire un tel outil en python adapté à notre propre besoin
    $moi= ( !== ) ? : ;

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    sinon puisque l'on ignore la stucture, il sera impossible de faire des requêtes sur ces tables
    Surtout que dans les bdd, on crée d'abord les tables avec les colonnes attendues/prévues. Alors que dans ce cas présent, il faudra(it) créer les tables quand la data arrive. Et au final on aura(it) autant de tables que de json reçu mais des tables n'ayant aucune relation entre elles. Bref dans ce cas la bdd (rappel : on parle de bdd "relationnelle") devient inutile et on stocke simplement le json reçu dans un fichier.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [AC-2016] Importer des données au format JSON
    Par PCBleu dans le forum Access
    Réponses: 1
    Dernier message: 22/03/2022, 11h58
  2. [AJAX] Récupérer les données au format JSON
    Par pitchounvivi dans le forum jQuery
    Réponses: 3
    Dernier message: 20/02/2020, 15h43
  3. parser un fichier contenant des données au format JSON
    Par Jasmine80 dans le forum Modules
    Réponses: 2
    Dernier message: 08/09/2017, 22h25
  4. Erreur conversion données au format JSON
    Par lekonquerant dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 07/11/2014, 11h44
  5. Réponses: 2
    Dernier message: 09/08/2008, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo