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 :

Syntaxe INSERT avec Python


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Par défaut Syntaxe INSERT avec Python
    Bonjour,

    Je cherche une syntaxe pour faire un INSERT dans une base de données MySQL avec Python. Je me connecte bien à la BDD et affiche les données, j'aimerai maintenant pouvoir en ajouter.

    Sachant qu'à l'ajout je fais appelle à des variables contenant certaines informations.

    Pour le moment j'ai fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curs.execute("INSERT INTO TABLE(CHAMP1, CHAMP1) VALUES (%s, %s)" % (Variable1, Variable2)  )
    Et j'ai testé avec des info "brut" ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curs.execute("INSERT INTO TABLE(CHAMP1, CHAMP1) VALUES ('Donnees1', 'Donnees2')" )
    Mais il me dit qu'il y a un problème de Duplicate entry '0' for key 'PRIMARY', il faut croire que Python ne gère pas l'auto increment car normalement MySQL le fait ?

    En vous remercient

    Edit: Enfaite la syntaxe marche...Mais c'est l'auto increment qui ne passe pas. Il faut récupérer à chaque fois la dernière clé et y ajouter un ou y a-t-il une autre alternative ?

    Cordialement

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour,

    Es-tu sûr que ton champs autoincrément n'est pas champ1 ou champ2 ?

    Normalement, python ne s'occupe pas des champs autoincrément. C'est le SGBD qui gère ça.

    Qu'utilise-tu pour "attaquer" mysql depuis python ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Par défaut
    Tout d'abord merci,

    j'utilise pymysql et oui normalement le SGDB gère ça ! Donc dans la requête il ne faut pas mettre le champ auto increment mais seulement les autres ?!

    C'est ce que j'ai fais mais il y a quelque chose qu'il n'aime pas.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Une question toute bête :
    As-tu essayé ta requête depuis un outil tel que php-myadmin ou autre ?

    Parce que, dans ce cas, le problème est dans la définition de la table.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Par défaut
    Ca vient de la table.............

    Il dit qu'il #1062 - Duplicate entry '0' for key 'PRIMARY'

    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO compil (cd_site, date_opecont, cd_infoloc, reseau, support) VALUES ('111', '2014-11-11', '111', 'rcr', 'girafe');
    Dans PHPmyadmin...

    Et un autre truc un peu bizarre je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    result2=curs.execute("select * from table1")
            result2=curs.fetchone()
            print result2
    Il me sort que 1 ligne, vois pas pourquoi

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Par défaut
    Donc enfaite c'est bien la table qui est bloqué, et c'est normal.

    Par contre Python ne m'affiche qu'une entrée alors qu'il y a un SELECT ALL

    Edit: C'est bon en faite il faut afficher le fetchone() ET le fetchall()...

    Merci à bientôt

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/06/2015, 17h14
  2. [MySQL] Syntaxe SQLI avec INSERT
    Par przvl dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/06/2015, 15h27
  3. Réponses: 1
    Dernier message: 24/11/2014, 15h08
  4. syntaxe requete insert avec where
    Par maub85 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/01/2012, 09h03
  5. [AC-2007] Problème de syntaxe INSERT INTO avec champs booleéns
    Par tAKAmAkA dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2009, 16h57

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