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 :

interaction avec une bdd sous format json


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut interaction avec une bdd sous format json
    Bonsoir je suis un peu perdu je me suis lancé dans la programmation en python il y a peu j'ai vu d'autres langage pas entièrement car à chaque fois j'ai du recommencer avec un autre langage enfin bref je dois réaliser un programme qui permet de comparer des valeurs entre plusieurs bdd écrite aux format json.

    Le but du programme est de télécharger les prix du marché à un instant t et les comparer avec tous les ordre de vente des différente région y en a environ entre 30 et 50 le but du programme est simple vérifier si le prix de l'ordre de vente pour même type_id dans une région données est inférieur au prix du marché calculer la différence en tenant compte du nombre d'article a vendre seulement voilà je bloque avant même de commencer à faire les opération le problème est que dans un dico les clef ne doivent pas être identique hors on retrouve type_id partout ainsi que market_price

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import json
    import urllib.request
    from urllib.request import urlopen
    request = urlopen("https://esi.tech.ccp.is/latest/markets/prices/?datasource=tranquility")
    html = ("https://esi.tech.ccp.is/latest/markets/prices/?datasource=tranquility")
     
    data = json.loads(response.read())
    data = {row["type_id"] : (row.get("average_price", 0), row.get("adjusted_price", 0)) for row in data}
     
    print (data['key'])
    donc j'arrive à télécharger le fichier mais pas à faire le reste la boucle qui permettrais de comparer les prix des ordres de vente avec le prix de base du marché pour voir si les prix sont plus bas je vous laisse voir par vous même a quoi ressemble le site ainsi que les données en espérant avoir un peu d'aide pour pouvoir réaliser les boucles me permettant de faire un mappage des données pour le comparatif des prix

    Le site de l'api

    https://esi.tech.ccp.is

    l'url donnée pour les prix de base

    https://esi.tech.ccp.is/latest/marke...ce=tranquility

    l'url pour les prix de la région 10000001

    https://esi.tech.ccp.is/latest/marke...pe=sell&page=1

    l'url pour les prix de la région 10000002

    https://esi.tech.ccp.is/latest/marke...e=sell&page=15

    comme vous pouvez le constater y a une grande difficulté là encore c'est que le nombre de page varie énormément et il est impossible de deviner combien de page de vente il y a pour chacune des régions

    j'ai vraiment besoin d'aide et vous en remercie à l'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par nightwatch Voir le message
    seulement voilà je bloque avant même de commencer à faire les opération le problème est que dans un dico les clef ne doivent pas être identique hors on retrouve type_id partout ainsi que market_price
    Il faut peut être organiser les données brutes pour faciliter les traitements que vous voulez faire. Pour çà, vous pouvez partir d'exemples (i.e. des cas significatifs) et vérifier valider que vous obtenez déjà les résultats attendus. Puis essayer de voir ce que çà donne lorsqu'on généralise.
    Vous avez peut être aussi à regarder si des bibliothèques comme Pandas ne simplifierait pas les choses.

    Citation Envoyé par nightwatch Voir le message
    comme vous pouvez le constater y a une grande difficulté là encore c'est que le nombre de page varie énormément et il est impossible de deviner combien de page de vente il y a pour chacune des régions
    Il faut étudier la structure du site Web pour voir comment traiter cette difficulté là.

    Dans les deux cas, vous avez un soucis côté conception i.e. comment comparer, comment récupérer le bon nombre de pages... Et tant que vous n'aurez pas défini cela, le programmer avec Python (ou tout autre langage) sera impossible.

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    en fouillant bien sur le net j'ai réussit à trouver ça : mais le problème reste le même le tri et aussi la boucle pour incrémenter la région qui doit englober le tout si je le fait avec request +params ça va m'ajouter un point d'interrogation sinon merci pour tes indication je vais aller voir cela sinon en attendant comment je peux faire pour modifier l'url sur la partie région uniquement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    import requests
    import time
     
    from requests.exceptions import HTTPError
     
    MARKET_URL = "https://esi.tech.ccp.is/v1/markets/10000001/orders/"
                                                                     #10000001 est l'id de la région
     
    def sync_requests(pages):
        responses = []
        start_time = time.time()
     
        for page in range(2, pages + 1):
            req = requests.get(MARKET_URL, params={'page': page})
            responses.append(req)
     
        end_time = time.time()
        elapsed = end_time - start_time
        print('Elapsed time for {} requests was: {}'.format(len(responses), elapsed))
     
        return responses
     
    if __name__ == '__main__':
        all_orders = []
        res = requests.get(MARKET_URL)
     
        res.raise_for_status()
     
        all_orders.extend(res.json())
        pages = int(res.headers['X-Pages'])
        responses = sync_requests(pages)
     
        for response in responses:
            try:
                response.raise_for_status()
            except HTTPError:
                print('Received status code {} from {}'.format(response.status_code, response.url))
                continue
     
            data = response.json()
            all_orders.extend(data)

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par nightwatch Voir le message
    sinon en attendant comment je peux faire pour modifier l'url sur la partie région uniquement?
    Une URL côté Python c'est juste une chaîne de caractères... qui sont un type de base supposé maîtrisé après avoir pris le temps d'ouvrir un tuto. (pré-requis avant de poster).
    note: d'autant que vous avez déjà la réponse dans le code que vous avez récupéré.

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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut
    pour ma par j'avais pensé directement mettre region id et le définir comme une variable qui retournerait une valeur numérique qui s'incrémente via une boucle for

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par nightwatch Voir le message
    pour ma par j'avais pensé directement mettre region id et le définir comme une variable qui retournerait une valeur numérique qui s'incrémente via une boucle for
    et c'est quoi la question?

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

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut bonjour à tous je recherche un peu d'aide ou plutôt de la doc
    J'ai un projet qui me dépasse littéralement à faire je dois comparer deux grosse liste de dictionnaire et pour l'instant je n'ai qu'un bout de code qui me permet à peine de télécharger une liste d'order


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import requests
    import json
     
    def load_market_id(identifier) :
        print ("Load market with id : %s" %str(identifier))
        url = "https://esi.tech.ccp.is/v1/markets/%s/orders/?datasource=tranquility&order_type=sell" %identifier
        data = []
        page_id = 0
     
        while True :
            res = requests.get(url, params={'page': page_id}).json()
            if not res : break
            data.extend(res)
            page_id += 1
     
        return data
     
    def load_all_market_id(start, end) :
     
        data = {}
        for identifier in range(start, end) :
            values = load_market_id(identifier)
            if values :
                data[identifier] = values
     
        return data
     
    for identifier, values in load_all_market_id(10000001, 10000065).items():
        print (identifier, lenvalues)
    la première fonction pour télécharger les prix ne fonctionne pas cela fais plus d'une semaine que je galère dessus et je ne trouve rien je dois comparer une énorme liste de dico avec une bien plus grosse encore (de quoi faire planter l'environnement si je le lance en entier et pour ça j'ai besoin de repère et y a aucun tuto qui parle des hashmap en français sur youtube je dois comparer un item_id de la liste des sell order avec son ite_id de même valeur et ensuite le prix et enfin la quantité et selon le résultat du profit l'afficher mais je ne sais pas comment tout les tuto vidéos sur les hashmap en python sont en anglais

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par nightwatch Voir le message
    J'ai un projet qui me dépasse littéralement
    Est si vous commenciez à apprendre à programmer avec des projets plus simples?
    En tout cas, même un programmeur expérimenté devrait y passer des heures à analyser les données, définir un algorithmes, mettre au point des bouts de code et finaliser le programme...
    Et franchement, on a bien mieux à faire.

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

Discussions similaires

  1. [PowerShell] Interaction avec une BDD MySQL
    Par Original1992 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 17/03/2015, 16h34
  2. Interactions avec une BDD
    Par pierrot54700 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/03/2014, 15h03
  3. [Smarty] Afficher les données d'une BDD sous forme de tableau avec options
    Par student_php dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/10/2010, 16h29
  4. Requete nom ville pour avoir code postal,avec une base sous format XMl
    Par naouah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 20h00
  5. [VB.NET] Enregistrer une BDD sous un autre format
    Par botanique dans le forum Windows Forms
    Réponses: 9
    Dernier message: 16/01/2006, 14h42

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