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 :

Gadfly gère-t'il les listes?


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut Gadfly gère-t'il les listes?
    Bonsoir, je suis en train d'écrire un programme basique qui remplit une base de données gadfly à partir d'une liste. Il plante lamentablement, et ne voyant pas l'erreur, j'en viens à me demander si gadfly gère bien les listes.

    Mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    import gadfly
     
    baseMusic=gadfly.gadfly()
    baseMusic.startup("mymusic", "/home/divayht/python/database/gadfly/music/")
    cur=baseMusic.cursor()
     
    liste_comp=[('Mozart', 1756, 1791),
            ('Beethoven', 1770, 1827),
            ('Handel', 1685, 1759),
            ('Schubert', 1797, 1828),
            ('Vivaldi', 1678, 1741),
            ('Monteverdi', 1567, 1643),
            ('Chopin', 1810, 1849),
            ('Bach', 1685, 1750)]
     
    liste_oeuvres=[('Vivaldi', 'Les quatre saisons', 20, 'T. Pinnock'),
            ('Mozart', 'Concerto piano N 12', 25, 'M. Perahia'),
            ('Brahms', 'Concerto violon N 2', 40, 'A. Grumiaux'),
            ('Beethoven', 'Sonate Au clair de la lune', 14, 'W. Kempf'),
            ('Beethoven', 'Sonate Pathetique', 17, 'W. Kempf'),
            ('Schubert', 'Quintette La truite', 39, 'SE of London'),
            ('Haydn', 'La creation', 109, 'H. Von Karajan'),
            ('Chopin', 'Concerto piano N 1', 42, 'M.J. Pires'),
            ('Bach', 'Toccata and fugue', 9, 'P. Burmester'),
            ('Beethoven', 'Concerto piano N 4', 33, 'M. Pollini'),
            ('Mozart', 'Symphonie N 40', 29, 'F. Bruggen'),
            ('Mozart', 'Concerto piano N 22', 35, 'S. Richter'),
            ('Beethoven', 'Concerto piano N 3', 37, 'S. Richter')]
     
    cur.execute("create table compositeurs (comp varchar, a_naiss integer, a_mort integer)")
    for i in liste_comp:
        cur.execute("insert into compositeurs(comp, a_naiss, a_mort) values (i[0], i[1], i[2])")
     
    cur.execute("create table oeuvres (comp varchar, titre varchar, duree integer, interpr varchar)")
    for i in liste_oeuvres:
        cur.execute("insert into oeuvres(comp, titre, duree, interpr) values (i[0], i[1], i[2], i[3])")
     
    baseMusic.commit()
    Et le magnifique message d'erreur qui en ressort:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    /usr/lib/python2.6/dist-packages/gadfly/store.py:11: DeprecationWarning: the md5 module is deprecated; use hashlib instead
      import sys, os, md5, types, marshal
    Traceback (most recent call last):
      File "music_table.py", line 35, in <module>
        cur.execute("insert into compositeurs(comp, a_naiss, a_mort) values (i[0], i[1], i[2])")
      File "/usr/lib/python2.6/dist-packages/gadfly/database.py", line 339, in execute
        cs = self.commands = self.connection.sql.DoParse1(statement, context)
      File "/usr/lib/python2.6/dist-packages/gadfly/kjParser.py", line 1161, in DoParse1
        return self.DoParse(String, Context, DoReductions)[0]
      File "/usr/lib/python2.6/dist-packages/gadfly/kjParser.py", line 1153, in DoParse
        ParseResult = ParseOb.GO()
      File "/usr/lib/python2.6/dist-packages/gadfly/kjParser.py", line 827, in GO
        self.DoOneReduction()
      File "/usr/lib/python2.6/dist-packages/gadfly/kjParser.py", line 760, in DoOneReduction
        self.ParseError(current,tokenVal, "nomatch1")
      File "/usr/lib/python2.6/dist-packages/gadfly/kjParser.py", line 811, in ParseError
        raise SyntaxError, 'unexpected token sequence.' + data
    SyntaxError: unexpected token sequence.near ::
    '_mort) values ('*'i[0], i[1], i[2'
    *******************************
    current state = 186
    expects: 
    'numeric_literal', 'character_string_literal', '?', '+', '-', 
    ('nomatch1',)
    current token = ((-8, 'user_defined_name'), 'I')
    Merci de votre aide

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je n'ai pas gadfly installé, mais ton insert ne devrais pas ressembler à cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cur.execute("insert into compositeurs(comp, a_naiss, a_mort) values (%s, %s, %s) % (i[0], i[1], i[2])")
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Ce code compile bien donc je pense que ma formulation est bonne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import gadfly
     
    baseDonn=gadfly.gadfly()
    baseDonn.startup('mydata','/home/divayht/python/database/gadfly')
    cur=baseDonn.cursor()
     
    liste=[16, 'Pierre', 1.68]
     
    cur.execute("create table membres (age integer, nom varchar, taille float)")
    cur.execute("insert into membres(age, nom, taille) values (21, 'Dupont', 1.83)")
    cur.execute("INSERT INTO MEMBRES(AGE, NOM, TAILLE) VALUES (15, 'Suleau', 1.57)")
    cur.execute("Insert Into Membres(Age, Nom, Taille) Values (18, 'Forcas', 1.69)")
    baseDonn.commit()
    Mais je vais quand même essayer la tienne

    edit: ça ne compile pas avec ta méthode,ça m'affiche ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gadfly.kjParser.LexTokenError: Lexical token not found near ::
    'aille) values ('*'%s, %s, %s) % ('

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Désolé, j'avais fais une erreur de syntaxe sur la réponse précédente. Essayes avec la syntaxe de la dernière ligne du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    liste_comp=[('Mozart', 1756, 1791),
            ('Beethoven', 1770, 1827),
            ('Handel', 1685, 1759),
            ('Schubert', 1797, 1828),
            ('Vivaldi', 1678, 1741),
            ('Monteverdi', 1567, 1643),
            ('Chopin', 1810, 1849),
            ('Bach', 1685, 1750)]
     
    for i in liste_comp:
        print "insert into compositeurs(comp, a_naiss, a_mort) values (%s, %s, %s)" % (i[0], i[1], i[2])
        #cur.execute("insert into compositeurs(comp, a_naiss, a_mort) values (%s, %s, %s)" % (i[0], i[1], i[2]))
    Mais tu devrais suivre le tutoriel python
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Le print fonctionne bien, mais pas le cur.execute :s

    Je suis le guide de Gerard Swinnen, mais il ne traite pas des listes pour gadfly, en tout cas pas comme ça :s

  6. #6
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Le cur.execute doit fonctionner si tu enlèves le # en début de ligne ^^
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    J'avais bien enlevé le # rassure-toi^^

    J'ai bien essayé ce que tu m'as dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    import gadfly
     
    baseMusic=gadfly.gadfly()
    baseMusic.startup("mymusic", "/home/divayht/python/database/gadfly/music/")
    cur=baseMusic.cursor()
     
    liste_comp=[('Mozart', 1756, 1791),
            ('Beethoven', 1770, 1827),
            ('Handel', 1685, 1759),
            ('Schubert', 1797, 1828),
            ('Vivaldi', 1678, 1741),
            ('Monteverdi', 1567, 1643),
            ('Chopin', 1810, 1849),
            ('Bach', 1685, 1750)]
     
    """liste_oeuvres=[('Vivaldi', 'Les quatre saisons', 20, 'T. Pinnock'),
            ('Mozart', 'Concerto piano N 12', 25, 'M. Perahia'),
            ('Brahms', 'Concerto violon N 2', 40, 'A. Grumiaux'),
            ('Beethoven', 'Sonate Au clair de la lune', 14, 'W. Kempf'),
            ('Beethoven', 'Sonate Pathetique', 17, 'W. Kempf'),
            ('Schubert', 'Quintette La truite', 39, 'SE of London'),
            ('Haydn', 'La creation', 109, 'H. Von Karajan'),
            ('Chopin', 'Concerto piano N 1', 42, 'M.J. Pires'),
            ('Bach', 'Toccata and fugue', 9, 'P. Burmester'),
            ('Beethoven', 'Concerto piano N 4', 33, 'M. Pollini'),
            ('Mozart', 'Symphonie N 40', 29, 'F. Bruggen'),
            ('Mozart', 'Concerto piano N 22', 35, 'S. Richter'),
            ('Beethoven', 'Concerto piano N 3', 37, 'S. Richter')]"""
     
    cur.execute("create table compositeurs (comp varchar, a_naiss integer, a_mort integer)")
    for i in liste_comp:
        print "insert into compositeurs(comp, a_naiss, a_mort) values (%s, %s, %s)" % (i[0], i[1], i[2])
        cur.execute("insert into compositeurs(comp, a_naiss, a_mort) values (%s, %s, %s)" % (i[0], i[1], i[2]))
     
    """cur.execute("create table oeuvres (comp varchar, titre varchar, duree integer, interpr varchar)")
    for i in liste_oeuvres:
        cur.execute("insert into oeuvres(comp, titre, duree, interpr) values (i[0], i[1], i[2], i[3])")"""
     
    baseMusic.commit()

    le message d'erreur est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SyntaxError: unexpected token sequence.near ::
    '_mort) values ('*'Mozart, 1756, 1'
    *******************************
    current state = 186
    expects: 
    'numeric_literal', 'character_string_literal', '?', '+', '-', 
    ('nomatch1',)
    current token = ((-8, 'user_defined_name'), 'MOZART')

  8. #8
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Les chaînes de caractères doivent être entourées de guillemets ou single-quote en SQL.

Discussions similaires

  1. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  2. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  3. [LG]Les listes
    Par franck H dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2004, 15h15

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