Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete sql

    26 juillet 2021 à 14:32:06

    bonjour

    voici ce que j'ai fais : 

    cursor.execute("SELECT keyword FROM keywords GROUP BY keyword HAVING COUNT(id) >= 2")
    records = cursor.fetchall()
    print(records)
    
    for record in records:
        print(record)
    
        for ligne in record:
            #decoupage des mots par ' '
            t_ligne = ligne.split(' ')
            print("parcours des mots dans lignes")
            for mot in t_ligne:
                print(mot)
    
                cursor.execute("UPDATE destinations SET description_keyword = CONCAT(description_keyword,'waterfall') WHERE id IN (SELECT id FROM destinations WHERE description_clean LIKE '%waterfall%'")
                records = cursor.fectchall()
    

    sauf que ma dernière requette ne fonctionne pas et n'est pas automatiser

    merci

    • Partager sur Facebook
    • Partager sur Twitter

    Merci à tous. Vous pouvez me retrouver ici :

    🌐 Visitez mon profil sur Comeup

    🚀 Découvrez BeFreelancr

    📱 Retrouvez-moi sur LinkedIn

      26 juillet 2021 à 19:02:40

      il manque au moins la parenthèse fermante du IN( .. ) à la fin de ta requête.
      Je pense que dans ton CONCAT tu devrais mettre un espace devant waterfall, si tes mots sont séparés par un espace dans le champ description_keyword (ou le séparateur que tu utilises)
      l'autre problème c'est que le fetchall de la ligne 16 se base sur la requête de la ligne 15, et non plus sur le cursor de la ligne 1; donc tu dois relancer la requête initiale si tu veux relire les données.
      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2021 à 7:05:55

        bonjour

        merci beaucoup pour les retours, malheureusement cela ne fonctionne toujours pas

        j'ai un peu retravailler dessus et voila ce que ca donne :

        cursor.execute("SELECT keyword FROM keywords GROUP BY keyword HAVING COUNT(id) >= 2")
        records = cursor.fetchall()
        print(records)
        #creation d'un dico vide
        dict_nb_occ = dict()
        
        print("parcours des données description_clean")
        for record in records:
            print(record)
            print("parcours des lignes dans records")
            for ligne in record:
                print(ligne)
                #decoupage des mots par ' '
                t_ligne = ligne.split(' ')
                print("parcours des mots dans lignes")
                for mot in t_ligne:
                    print(mot)
                    #incrémente dico[mot]
                    if dict_nb_occ.get(mot) == None:
                        dict_nb_occ[mot] = 1
                    else:
                        dict_nb_occ[mot] += 1
        
                        sql_update = "UPDATE destinations SET description_keyword = CONCAT(description_keyword, dict_nb_occ[mot]) WHERE id IN (SELECT id FROM destinations WHERE description_clean LIKE '%%')"
                        cursor.execute(sql_update)
                        conn.commit()
                        print ("modif faite")

        merci

        -
        Edité par AdServ 27 juillet 2021 à 7:31:02

        • Partager sur Facebook
        • Partager sur Twitter

        Merci à tous. Vous pouvez me retrouver ici :

        🌐 Visitez mon profil sur Comeup

        🚀 Découvrez BeFreelancr

        📱 Retrouvez-moi sur LinkedIn

          27 juillet 2021 à 11:25:40

          dict_nb_occ est une variable python, la base de donnée ne connait pas cette variable.

          utilise une chaine formatée, pour insérer sa valeur (ou concatène la variable à la chaine

          sql_update = f"UPDATE destinations SET description_keyword = CONCAT(description_keyword, ' ', '{dict_nb_occ[mot]}') WHERE id IN (SELECT id FROM destinations WHERE description_clean LIKE '%%')"
          


          il ne manque pas un truc au niveau du LIKE '%%' ?? du genre {dict_nb_occ[mot]}, comme précédemment ?

          PS, j'ai de nouveau ajouter un espace devant le mot pour faire le séparateur, sinon si description_keyword vaut 'toto' et la valeur 'truc', CONCAT('toto','truc') retournera 'tototruc' donc difficile de repérer les mots ensuite (CONCAT('toto', ' ' , 'truc') => 'toto truc')

          -
          Edité par umfred 27 juillet 2021 à 11:25:54

          • Partager sur Facebook
          • Partager sur Twitter
            27 juillet 2021 à 19:22:20

            salut

            merci beaucoup, au final j'ai utilisé une autre technique

            en tout cas merci

            • Partager sur Facebook
            • Partager sur Twitter

            Merci à tous. Vous pouvez me retrouver ici :

            🌐 Visitez mon profil sur Comeup

            🚀 Découvrez BeFreelancr

            📱 Retrouvez-moi sur LinkedIn

              27 juillet 2021 à 19:29:05

              et tu pourrais nous indiquer laquelle (si ça peut servir à quelqu'un un jour)?
              • Partager sur Facebook
              • Partager sur Twitter
                28 juillet 2021 à 23:32:21

                oui bien sur

                #on sélectionne les keyword dans la table keywords. le keyword doit y etre deux ou plusieurs fois
                cursor.execute("SELECT keyword FROM keywords GROUP BY keyword HAVING COUNT(id) >= 2")
                records = cursor.fetchall()
                
                print("parcours des données keyword")
                for record in records:
                    print(record)
                    print(record[0])
                    sql_update = "UPDATE destinations SET description_keyword = CONCAT(description_keyword, %s) WHERE id IN (SELECT d.* FROM (SELECT dest.id FROM destinations AS dest WHERE dest.description_clean LIKE %s) AS d)"
                    val = (' ' +record[0], '%'+record[0]+'%')
                    retour = cursor.execute(sql_update, val)
                    print(retour)
                conn.commit()
                print ("modif faite")
                
                



                • Partager sur Facebook
                • Partager sur Twitter

                Merci à tous. Vous pouvez me retrouver ici :

                🌐 Visitez mon profil sur Comeup

                🚀 Découvrez BeFreelancr

                📱 Retrouvez-moi sur LinkedIn

                requete sql

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown