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

Fermé
zebug27 Messages postés 1 Date d'inscription vendredi 17 novembre 2023 Statut Membre Dernière intervention 17 novembre 2023 - 17 nov. 2023 à 19:30
jee pee Messages postés 40475 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 novembre 2024 - 18 nov. 2023 à 14:06

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
17 nov. 2023 à 20:56

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

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
18 nov. 2023 à 13:58

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


0
jee pee Messages postés 40475 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 novembre 2024 9 428
Modifié le 18 nov. 2023 à 15:41

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