J'ai beaucoup cherché sur Google mais ça n'a pas marché. J'ai posté une question la semaine dernière, mais je n'ai pas reçu de réponse car il semble qu'elle ait été trop longue...
Espérons que la nouvelle question soit beaucoup plus claire.
Il s'agit juste d'un petit morceau de code et si vous l'exécutez, vous serez en mesure de reproduire le problème. Ce que j'ai besoin de faire, c'est de récupérer l'entrée de l'utilisateur (E1 de la classe mainGUI) et de la passer à la fonction insert() de la classe Database. L'erreur que j'obtiens lorsque j'essaie d'ajouter une entrée est la suivante :
"self.curs.execute("INSERT INTO diary VALUES ( ?)", (date)) sqlite3.ProgrammingError : Nombre incorrect de liaisons fournies. L'instruction actuelle en utilise 1, et il y en a 0 de fournis."
Je peux lire la base de données sans problème.
Toute aide serait très appréciée.
from tkinter import *
import sqlite3
class mainGUI(object):
def __init__(self,window):
self.window=window
self.E1 = Entry(window)
self.E1.grid(row=1, column=0)
self.EG1 = self.E1.get()
global E4
E4 = Listbox(window)
E4.grid(row=2)
B1 = Button(window, text="Add entry", command=lambda: database.insert(self.EG1))
B1.grid(row=1, column=4)
B2 = Button(window, text="View all", command=database.view_all)
B2.grid(row=2, column=4, sticky="WN")
window.mainloop()
class Database(mainGUI):
def __init__(self, db):
self.conn = sqlite3.connect(db)
self.curs = self.conn.cursor()
self.curs.execute("CREATE TABLE IF NOT EXISTS diary (date TEXT)")
self.conn.commit()
def insert(self,date):
database.add_entry(date)
E4.delete(0, END)
E4.insert(END,(date))
def add_entry(self,date):
self.curs.execute("INSERT INTO diary VALUES (?)", (date))
self.conn.commit()
def view_all(self):
E4.delete(0, END)
self.curs.execute("SELECT * FROM diary")
data = self.curs.fetchall()
for row in data:
E4.insert(END,row)
if __name__ == "__main__":
database = Database("dbase.db")
window=Tk()
gui = mainGUI(window)