Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme "INSERT" mysql en python

    24 mars 2019 à 15:49:05

    bonjour a tous, tout d'abord je suis un peut novice dans se domaine et oui j'ai déjà chercher si mes réponses n’était pas déjà résolue , 

    mon projet est une serre connecter autonome open source, contrôler par une raspberry, j'ai donc crée une BDD (Base de données) pour stoker mes donner et pouvoir les traiter plus tard pour avoir des statistiques.maintenant je doit stoquer mes donner recu par mon capteur sur ma BDD et c'est la que se pose le probleme, j'arrive a cree une table vie le script Python : 

    import mysql.connector 
    baseDeDonnees = mysql.connector.connect(host="localhost",user="catalogue",password="JieTh8Th", database="Catalogue")
    cursor = baseDeDonnees.cursor()
    cursor.execute("CREATE TABLE Produits (reference CHAR(5) NOT NULL PRIMARY KEY, nom TINYTEXT NOT NULL, prix FLOAT NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8;")
    baseDeDonnees.close()



    pour le moment tout fonctionne mais des que je passe sur une commande SQL INSERT plus rien ne fonctionne : 

    import mysql.connector 
    baseDeDonnees = mysql.connector.connect(host="localhost",user="catalogue",password="JieTh8Th", database="Catalogue")
    curseur = baseDeDonnees.cursor()
    curseur.execute("INSERT INTO Produits (reference, nom, prix) VALUES (%s, %s, %s)", ("ARB42", "Canapé deux places noir", 199.99))
    baseDeDonnees.commit()
    baseDeDonnees.close()



     et voici mon code erreur : 

    Traceback (most recent call last):
      File "new 2.py", line 4, in <module>
        curseur.execute("INSERT INTO Produits (reference, nom, prix) VALUES (%s, %s, %s)", ("ARB42", "Canapé deux places noir", 199.99))
      File "/usr/lib/python3/dist-packages/mysql/connector/cursor.py", line 559, in execute
        self._handle_result(self._connection.cmd_query(stmt))
      File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 494, in cmd_query
        result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
      File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 396, in _handle_result
        raise errors.get_exception(packet)
    mysql.connector.errors.ProgrammingError: 1146 (42S02): Table 'serre.Produits' doesn't exist
    

    merci d'avance pour votre aide 

    -
    Edité par VictorLerivray 24 mars 2019 à 15:50:01

    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2019 à 9:19:58

      Bonjour,

      L'erreur signale que ton code essaye d'insérer dans une base de données nommée "serre" alors que tu ouvres une base de données nommée "Catalogue".

      Je pense que le code que tu postes n'est pas le code réellement exécuté ...

      Tu parles en plus d'une appli de gestion de capteurs, mais tu travailles avec une table produits ... incohérent ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        25 mars 2019 à 9:59:40

        oui les codes indiquer ne sont pas ceux utiliser mais tout ça fonctionne le problème venais (je crois) de la syntaxe de ma commande INSERT j'ai changer de librairie et ça fonctionne mais j'ai une autre erreur : 

        code : 

        import Adafruit_DHT
        import MySQLdb
        
        sensor = Adafruit_DHT.DHT22
        
        
        pin = 21
        
        
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        
        
        if humidity is not None and temperature is not None:
            print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))
        
        	
        else:
            print('Echec de lecture. Essayez encore!')
        	
        bdd = MySQLdb.connect(host="localhost",user="root",passwd="root",db="serre")  # remplacer les xxx et yyy par votre login et mdp mysql
        req = bdd.cursor()
        #envoi à la base de donnée
        try:
        	req.execute("""insert into `test` (`Température`,`Humidité`) values (%s,%s)""",(temperature,humidity))
        	bdd.commit()
        except:
        	bdd.rollback()
        	#fermeture de la connexion
        bdd.close()

         erreur : 

        root@raspberrypi:/home/pi/Documents# python3 test_capteur.py
        Temp=23.9*C  Humidity=43.0%
        test_capteur.py:24: Warning: Data truncated for column 'Température' at row 1
          req.execute("""insert into `test` (`Température`,`Humidité`) values (%s,%s)""",(temperature,humidity))
        

        du coup j'ai une erreur mais les données sont bien envoyer dans la BDD.. 

        *

        *

        *

        *

        *

        c'est bon trouver pour mon erreur c'est un problème dans ma BDD, mes données étaient en DÉCIMALE(5) alors que j'avais des chiffres a virgule j'ai donc changer pour DOUBLE(5) et voila plus d'erreur !

        -
        Edité par VictorLerivray 25 mars 2019 à 10:06:42

        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2019 à 10:10:40

          VictorLerivray a écrit:

          les codes indiquer ne sont pas ceux utiliser

          C'est sympa de nous demander de l'aide mais de ne pas nous donner les bons éléments ...

          VictorLerivray a écrit:

          j'ai changer de librairie et ça fonctionne

          Rien à voir entre la librairie utilisée et l'erreur postée au début ... Je pense que tu tires dans tous les sens et que tu ne sais plus ce que tu as changé ... Ce n'est pas pratique pour nous ... Si tu veux de l'aide pertinente, il faut être un peu plus patient ...

          VictorLerivray a écrit:

          j'ai une autre erreur

          Il faut lire les erreurs et essayer de les comprendre ...

          VictorLerivray a écrit:

          Warning: Data truncated for column 'Température' at row 1
          

          Ce n'est pas une erreur, mais un avertissement (warning, donc non bloquant), qui te dit que la valeur a été tronquée pour la colonne température à la ligne 1 ...

          Cela signifie que la valeur passée ne correspondait pas au type de la colonne en question et que MySQL a du "couper" la valeur pour l'insérer en base ...

          Quel est le type de la colonne en question ? Quelle valeur as-tu voulu passer ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

          probleme "INSERT" mysql en python

          × 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