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 :

requete mysql et ElasticSearch


Sujet :

Python

  1. #1
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut requete mysql et ElasticSearch
    Bonjour,

    je code un petit programme en python qui me permet de faire des requêtes ES en fonction des résultats via mysql.
    Lors de ma deuxième requête, ES me retourne rien .....

    voici mon code:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import pprint
    import sys
    import logging
    import json
    import time
    import random
    import os,binascii
    import pycurl
    import StringIO
    import MySQLdb as mdb
    import urlparse
    import smtplib
     
     
    #log
    logger = logging.getLogger(__name__)
    logger.info("Lancement du worker")
    #variables globales
    ip_ES ="127.0.0.1"
    port_ES = "9200"
    index_ES ="twitter"
    type_ES = "tweet"
    c = pycurl.Curl()
    b = StringIO.StringIO()
     
     
    #
    # Creation de l'url
    #
    def BuildUrl():
        return "http://"+ip_ES+":"+port_ES+"/"+index_ES+"/"+type_ES+"/"
     
     
    #
    # Creation de la requete curl pour
    # interroger ES
    #
    def CreateRqtES(info,nbr_annonce):
    #def test(nbr_annonce, brand): 
        request = BuildUrl()+'_search?sort=title:asc&from=0&size='+str(nbr_annonce)+'&q=annonce:'+annonce+'&pretty=true'
        print("link:", request)
        try:
            c.setopt(c.URL, request)
            c.setopt(pycurl.WRITEFUNCTION, b.write)
            c.perform()
            c.close()
            print "test" 
            try:
                decoded = json.loads(b.getvalue())
                json.dumps(decoded, sort_keys=True, indent=4)
                for index in decoded['hits']['hits']:
                    var = index['_source']['link']
                    print var
            except (ValueError, KeyError, TypeError) as error:
                print error
                #print "JSON format error"
            except IOError as e:
                print "I/O error({0}): {1}".format(e.errno, e.strerror)
        except Exception, e:
            logger.info("[-][FoundIdDocument] Erreur de connexion pycurl")
     
     
     
    #
    # Fonction qui permet de se connecter
    # a la BDD
    # 
    def connectionBDD():
        try:
            con = mdb.connect('localhost', 'root', 'root', 'toto')
            with con:
                cur = con.cursor()
                cur.execute("SELECT * FROM  newsletters")
                for i in range(cur.rowcount):
                    row = cur.fetchone()
                    print row[1], row[2]
                    CreateRqtES(row[1], row[2])
     
        except _mysql.Error, e:
            print "Error %d: %s" % (e.args[0], e.args[1])
            sys.exit(1)
        finally:
            if con:
                con.close()
     
    if __name__=="__main__":
        connectionBDD()
    si quelqu'un a une piste, je suis preneur

    merci d'avance
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    J'ai lu votre code en diagonale.
    L'interface avec ES est une chaîne de caractères qu'on passe à curl pour effectuer une requête HTTP.

    Vous pourriez tester ce que ça donne en ligne de commande.
    Si çà fonctionne, la question Python serait alors "comment fabriquer la même chaîne de caractères à partir de...."

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

  3. #3
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Bonjour,

    merci de votre réponse.
    Mes requêtes CURL sont bien construite et fonctionne bien.
    Ma seule problématique est que lorsque je lance une seconde requête, j'obtiens une erreur alors que ma requête est bonne (tester et approuvé en ligne de commande).
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par pi-2r Voir le message
    Mes requêtes CURL sont bien construite et fonctionne bien.
    Ma seule problématique est que lorsque je lance une seconde requête, j'obtiens une erreur alors que ma requête est bonne (tester et approuvé en ligne de commande).
    Désolé mais je n'ai pas beaucoup de temps pour vous et je serais bref.
    "j'obtiens une erreur" : si vous ne postez pas le traceback qu'affiche Python on ne va pas pouvoir deviner comment vous aider à traiter cette erreur.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    solution trouvé en passant par urllib2.
    pycurl me génère un bug quand j'interroge plusieurs fois le même document.
    Pour l'erreur, cela correspondait à une erreur json, alors que la requête était bonne
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. résultat d'une requete mysql
    Par noinneh dans le forum MFC
    Réponses: 4
    Dernier message: 03/03/2005, 16h54
  2. arret requete mysql
    Par titiyo dans le forum Bases de données
    Réponses: 5
    Dernier message: 15/10/2004, 17h40
  3. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  4. Requete MySql pour Mambo Open source
    Par azman0101 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/06/2004, 09h34

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