En gros j'aimerai qu'une des colonnes de ma base de données SQLite ne contienne qu'une seule donnée a la fois, donc j'ai créé un programme qui récupère d'abord l'ancienne donnée pour pouvoir la supprimer et enfin injecter la nouvelle. Le problème est que le programme me renvoie que l'ancienne donnée est (15.5,) par exemple, ce que je ne peux pas retrouver dans ma base de donnée pour le supprimer.
J'espère avoir été assez clair…^^
D'avance merci
import sqlite3
conn = sqlite3.connect('dbase.db')
cur = conn.cursor()
cur.execute("""SELECT maths FROM moyennes""")
moyenne = cur.fetchone()
print(moyenne)
cur.execute(""""delete from moyennes where maths = moyenne""")
cur.execute("""insert into moyennes(maths) values(17.5)""")
conn.commit()
cur.close()
conn.close()
Sur le delete, il y a 4 " au début pour 3 à la fin de la chaîne
> where maths = moyenne
Ne fait probablement pas ce que tu penses : ça ne doit pas réinjecter la variable moyenne, SQLite va chercher à comparer 2 colonnes : maths à moyenne. Si les erreurs étaient gérées, ce serait apparu ...
> ne contienne qu'une seule donnée a la fois
Pourquoi mettre une clause WHERE dans ce cas ? (ou je n'ai pas compris)
et avec un update au lieu d'un delete+insert ? le risque c'est aussi qu'il y ai plusieurs lignes de supprimer/mises à jour si la valeur existe plusieurs fois
Ça serait mieux si tu donnais un exemple précis et complet, qu' on n'aie pas besoin d'essayer de deviner.
Pour UPDATE, tu devrais regarder la documentation. Il y a aussi INSERT OR REPLACE. Mais c'est des moyens de faire quelque chose, le problème c'est d'abord de savoir ce qu'on veut faire. Le comment et avec quoi, ca vient après.
Pour l'exemple concret, je voudrais faire une base de données donc avec des notes. Mais je voudrais aussi qu'il y ai des colonnes pour les moyennes et donc ou il n'y aurais qu'une seule donnée : on n'a qu'une seule moyenne. Et donc dès qu'on rajoute une note, je voudrais actualiser la moyenne.
Pour l'exemple concret, je voudrais faire une base de données donc avec des notes. Mais je voudrais aussi qu'il y ai des colonnes pour les moyennes et donc ou il n'y aurais qu'une seule donnée : on n'a qu'une seule moyenne. Et donc dès qu'on rajoute une note, je voudrais actualiser la moyenne
Un exemple concret, c'est
La déclaration des tables
Quelques lignes dedans
La description de ce que tu veux faire avec (état des tables avant / après)
Avec ce que tu nous dit, on ne sait pas si tu veux faire des moyennes de notes d'élève, de groupe et/ou de matières, avec ou sans coefficient. Le sais-tu toi-même ?
D'ailleurs pourquoi stocker les moyennes, puisque ça se recalcule à partir des notes ?
- Edité par michelbillaud 18 mars 2022 à 11:17:58
Récupérer le contenu d'une requête SQLite
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli