Partage
  • Partager sur Facebook
  • Partager sur Twitter

Savoir si une requete SQL renvoie des informations.

un comme isset en php (pas frapper :-)

Sujet résolu
    30 août 2010 à 19:44:39

    bonjour,

    Requete= "SELECT Fournisseur FROM Fournisseur WHERE rowid= '111' "
    
    conn = sqlite3.connect("Echantillion.sqlite")
    conn.row_factory = sqlite3.Row
    c = conn.cursor()
    c.execute(Requete)
    Resultat= c
    c.close()
    


    voila mon probleme je voudrais savoir si le fournisseur 111 existe dans ma table ou pas?

    avant de poster je suis tomber sur ce lien et moi aussi je sui un boulet qui a rellement commancer la programmation avec PHP et la fonction isset bah je l'aimais bien surtout dans se genre de cas ou on n'a aucune idee du contenu de la variable.

    alors un petit peu d'aide serais la bienvenue.

    merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      31 août 2010 à 1:06:41

      Salut,

      Déjà, le « Resultat = c » je trouve ça un peu bizarre comme truc, et je te conseille de l'enlever.

      Après pour ton problème, déjà il n'est pas question de savoir si une variable est définie, juste de connaître savoir si la requête à renvoyé quelque chose, ou le nombre de colonnes qu'elle a renvoyée.
      Il suffit de lire la doc de python : http://docs.python.org/library/sqlite3.html ;)
      Et on découvre qu'il existe un attribut rowcount :)

      Requete= "SELECT Fournisseur FROM Fournisseur WHERE rowid= '111' "
      
      conn = sqlite3.connect("Echantillion.sqlite")
      conn.row_factory = sqlite3.Row # elle fait quoi cette ligne ?
      c = conn.cursor()
      c.execute(Requete)
      
      if c.rowcount > 0:
          print 'la requête a renvoyé quelque chose'
      else
          print 'la requête n\'a rien renvoyé'
      
      c.close()
      


      Ou sinon, tu peux aussi procéder comme ça, si tu as besoin de traiter les résultats par la suite :
      Requete= "SELECT Fournisseur FROM Fournisseur WHERE rowid= '111' "
      
      conn = sqlite3.connect("Echantillion.sqlite")
      conn.row_factory = sqlite3.Row # elle fait quoi cette ligne ?
      c = conn.cursor()
      c.execute(Requete)
      
      resultats = c.fetchall()
      
      if len(resultats) > 0:
          print 'la requête a renvoyé quelque chose'
      else
          print 'la requête n\'a rien renvoyé'
      
      c.close()
      


      Ou tu peux aussi faire une requête de type « SELECT COUNT(*) FROM Fournisseur WHERE rowid= '111' », et voir son résultat.

      PS : Ne manque t'il pas un « import sqlite3 » au début du code ?

      PS2 : Le noms de tes variables ne doivent pas commencer par une majuscule : C'est réservé au noms des classes.

      PS3 : Ta table Fournisseur contient une colonne Fournisseur ???

      PS4: Si tu comptes envoyer dynamiquement le « rowid », attention aux injections SQL !!!
      • Partager sur Facebook
      • Partager sur Twitter
        31 août 2010 à 18:59:55

        Citation : palkeo


        Ou sinon, tu peux aussi procéder comme ça, si tu as besoin de traiter les résultats par la suite :

        Requete= "SELECT Fournisseur FROM Fournisseur WHERE rowid= '111' "
        
        conn = sqlite3.connect("Echantillion.sqlite")
        conn.row_factory = sqlite3.Row # elle fait quoi cette ligne ?
        c = conn.cursor()
        c.execute(Requete)
        
        resultats = c.fetchall()
        
        if len(resultats) > 0:
            print 'la requête a renvoyé quelque chose'
        else
            print 'la requête n\'a rien renvoyé'
        
        c.close()
        




        cette solution marche bien parcontre la premiere me renvoie toujour "la requête n'a rien renvoyé" pourquoi?

        conn.row_factory = sqlite3.Row => sert a pouvoir utiliser le nom des champ plutot que leurs index exemple:
        print resultats['Fournisseur'] plutot que resultats['0']

        Citation : palkeo


        PS2 : Le noms de tes variables ne doivent pas commencer par une majuscule : C'est réservé au noms des classes.



        je sais mais je m'y perd si il n'a pas un $ devant mes variable alors je met des majuscule :-°

        sinon je te remercie pour ton aide
        • Partager sur Facebook
        • Partager sur Twitter
          31 août 2010 à 19:29:52

          Citation : vianneyba

          cette solution marche bien parcontre la premiere me renvoie toujour "la requête n'a rien renvoyé" pourquoi?


          Soit parce que je me suis trompé, ce qui est bien possible, mais à priori j'ai pas l'impression.
          Ou alors c'est parce que la requête ne renvoie rien… :D

          Tu es sur que ta table contient une colonne Fournisseur ?

          Sinon, essaye un « print resultats » et renvoie le résultat pour voir.
          Et poste un dump de ta table aussi, histoire de voir.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            31 août 2010 à 22:09:13

            Citation : vianneyba

            je sais mais je m'y perd si il n'a pas un $ devant mes variable alors je met des majuscule :-°



            Il est déconseillé de t'inventer des conventions de nommage particulières. Les gens qui programment en Python ont tendance à respecter certaines conventions.

            Pense au jour où tu participeras à un projet collectif, voire open source. Il est important que tout le monde suive la même organisation ;) .
            • Partager sur Facebook
            • Partager sur Twitter
              1 septembre 2010 à 18:29:22

              Citation : palkeo


              Requete= "SELECT Fournisseur FROM Fournisseur WHERE rowid= '111' "
              
              conn = sqlite3.connect("Echantillion.sqlite")
              conn.row_factory = sqlite3.Row # elle fait quoi cette ligne ?
              c = conn.cursor()
              c.execute(Requete)
              
              if c.rowcount > 0:
              print 'la requête a renvoyé quelque chose'
              else:
              print 'la requête n\'a rien renvoyé'
              
              c.close()
              




              c'est ce bout de code qui ne marche pas :p
              c.rowcount = -1 que le fournisseur existe ou pas :(
              Requete= "SELECT Fournisseur FROM Fournisseur"
              meme de cette maniere j'obtient c.rowcount = -1
              ????

              mais en passant par resultats = c.fetchall() sa marche nickel.
              • Partager sur Facebook
              • Partager sur Twitter

              Savoir si une requete SQL renvoie des informations.

              × 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