Quand j'envoie une requete simple (req = ("SELECT * FROM Mouvements") dans la "class Database" cela fonctionne
Quand j'envoie une requete simple (req = ("SELECT * FROM Mouvements where coche_pointage = ? ",(0,))) dans la "class Database" cela ne fonctionne pas avec un message d'erreur (ValueError: operation parameter must be str)
Merci d'avance pour vos réponses
import sqlite3
class Database:
def __init__(self):
self._conn = sqlite3.connect("essais.db")
self._cursor = self._conn.cursor()
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.commit()
self.connection.close()
def connection(self):
return self._conn
def cursor(self):
return self._cursor
def commit(self):
self.connection.commit()
def execute(self,req,nbr):
self._cursor.execute(req)
if nbr == 2 :
return self.fetchall()
else :
return self.fetchone()
def fetchall(self):
return self._cursor.fetchall()
def fetchone(self):
return self._cursor.fetchone()
def query(self, sql, params=None):
self.cursor.execute(sql, params or ())
return self.fetchall()
# cette requete fonctionnn
req = ("SELECT * FROM Mouvements")
# cette requete ne fonctionne
req = ("SELECT * FROM Mouvements where coche_pointage = ? ",(0,))
# message d'erreur
ValueError: operation parameter must be str
# envoi de la requete dans la class
li = Database().execute(req,2)
print("li",li)
Oui on te dit que req n'est pas une chaîne de caractères, regarde l'exemple de la doc pour adapter
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
EDIT: En fait la méthode execute sur sqlite3 prend un paramètre ou plusieurs paramètres supplémentaires, mais tu choisis dans ta classe de ne pas l'utiliser.
Seulement dans l'exécution de ta méthode execute dans Database, tu y ajoutes un paramètre.
Va falloir que tu te mettes d'accord avec toi même...
- Edité par fred1599 6 avril 2020 à 8:52:10
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Wep c'est de ça exactement que je parlais, mais pour rester cohérent, c'est un conseil, met arg avant nbr, comme ça tu gardes l'ordre naturel de la méthode execute. Sinon tu risques de te perdre sur des petits détails stupides.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Merci pour ton conseil. cela parait plus logique et plus facile pour la lecture.
Encore MERCI
envoi requete dans une Class
× 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.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)