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 :

Une fonction pour écrire dans une base de données


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
    Septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 7
    Par défaut Une fonction pour écrire dans une base de données
    Bonjour à tous !

    Je débute en Python et j'ai décidé aujourd'hui de faire un petit projet perso de caisse enregistreuse utilisant la base de donnée sqlite3.
    j'arrive à créer une base de donnée, une table et à écrire dedans. Je n'arrive cependant pas à créer une fonction me permettant d'écrire dans ma table avec 3 arguments
    je vous laisse mon bout de code et l'erreur qui est retourné :

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import sqlite3
    def adprod (ID,name,price):
        conn = sqlite3.connect('main.db')
        c = conn.cursor()
        c.execute("INSERT INTO product VALUES (ID,name,price)")
        conn.commit()
        conn.close()
     
    adprod (7,coca,2)

    et ici l'erreur retournée :

    File "\test.py", line 9, in <module>
        adprod (7,coca,2)
    NameError: name 'coca' is not defined

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 31
    Par défaut
    Salut,

    Tu n'as pas mis de guillemets autour de coca, donc il cherche la variable coca qui n'est pas définie, d'où l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import sqlite3
     
    def adprod (ID,name,price):
      conn = sqlite3.connect('main.db')
      c = conn.cursor()
      c.execute("INSERT INTO product VALUES (ID,name,price)")
      conn.commit()
      conn.close()
     
    adprod (7,"coca",2)
    Cela devrait marcher je pense.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 7
    Par défaut
    merci pour la réponse, j'avais également essayé entre temps mais j'ai eu d'autre erreur :

     File "\test.py", line 8, in <module>
        adprod (5,"coca",2)
      File "C:\test.py", line 5, in adprod
        c.execute("INSERT INTO product VALUES (ID,name,price)")
    sqlite3.OperationalError: no such column: ID

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 31
    Par défaut
    C'est parce que ta commande SQL est une chaine de caractère, donc la il essaye d'executer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO product VALUES (ID,name,price)
    Or tu veux qu'il fasse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO product VALUES (7,"coca",2)
    Il faut donc que tu concatènes tes variables a l'intérieur de la requete SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.execute("INSERT INTO product VALUES ("+str(ID)+","+str(name)+","+str(price)+")")

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 7
    Par défaut
    Toujours un petit hic :

    File "C:\test.py", line 5, in adprod
        c.execute ("INSERT INTO product VALUES("+str(ID)+","+str(name)+","+str(price)+")")
    sqlite3.OperationalError: no such column: coca

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 31
    Par défaut
    Autant pour moi, j'ai oublié des apostrophes!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.execute("INSERT INTO product VALUES ("+str(ID)+","'+str(name)+'","+str(price)+")")

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/05/2015, 11h49
  2. Objet existant reconnu dans une fonction mais pas dans une autre
    Par Jiyuu dans le forum Général Python
    Réponses: 0
    Dernier message: 20/09/2011, 18h19
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. [Dojo] Objet Dojo créé dans une fonction et utilisé dans une autre.
    Par hapalemur dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 05/06/2009, 13h59
  5. Réponses: 2
    Dernier message: 29/08/2007, 19h43

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