Erreur dans mon code en Python pour créer une base de donnée

zebug27 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
jee pee Messages postés 41513 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour, je suis un débutant en code, et mon but dans mon dernier programme était entre autre de créer une base de données. Malheureusement une fois que j'essaie de l'exécuter l'erreur suivante s'affiche : "sqlite3.OperationalError: table competences has no column named sante_mentale". Tout ce dont je suis sûr c'est que l'erreur se trouve dans la création des colonnes de mon tableau. 

mon code est le suivant :

curseur.execute('''
    CREATE TABLE IF NOT EXISTS competences (
        stat INTEGER PRIMARY KEY,
        sante_mentale FLOAT,
        discipline FLOAT,
        motivation FLOAT,
        sante FLOAT,
        ambition FLOAT,
        physique FLOAT,
        intelligence FLOAT,
        sociabilite FLOAT
    )
''')

curseur.execute( 'INSERT INTO competences (sante_mentale,discipline, motivation, sante, ambition, physique, intelligence, sociabilite) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?)', ('sante_mentale_v', 'discipline_v', 'motivation_v', 'sante_v', 'ambition_v', 'physique_v', 'intelligence_v', 'sociabilite_v'))

A voir également:

4 réponses

Utilisateur anonyme
 

Bonsoir

tu es sûr d'avoir copié le message d'erreur au complet ?

Il ne manquerait pas un truc du genre "de type string"?

J'ai jamais utilisé sqlLite en python, mais manifestement, tu essayes d'écrire du texte dans des colonnes de type Float.


0
Zebug27
 

Bonjour,

J'ai revérifié mais le message d'erreur est bel et bien le même que celui que j'ai copié. Donc je ne pense pas que le problème vient de là.

Merci quand même pour ta réponse.

0
Utilisateur anonyme
 

Hum, et si tu essayais de mettre un float pour voir?


0
jee pee Messages postés 41513 Date d'inscription   Statut Modérateur Dernière intervention   9 716
 

Bonjour,

D'abord je suis aussi d'accord qu'il est inapproprié de mettre une chaine dans un float.

En ligne 15 tu ouvres une quote devant l'INSERT qui n'est pas refermée. Enfin sur l'instruction précédente tu utilises trois quote pour protéger l'ordre sql, pourquoi ne pas reproduire ce même formalisme en ligne 15 ?

Il serait utile que tu nous donnes un code plus complet que l'on puisse tester.

Enfin, sur la structure des données, dans ton code tu ne remplis pas la clé de l'enregistrement, qui n'est dans la description de la table, ni auto générée, ni auto incrémentée, donc toujours NULL.


0