Problem beim Code (Update der Datenbank Einträge)
Verfasst: Samstag 20. Februar 2021, 16:04
Hallo, ich arbeite an einer To do Liste für mein Abschlussprojekt aber habe einen Fehler in der Datenbank. Ich suche den Fehler seit 2 Tagen aber konnte Ihn nicht finden. Mir wird angezeigt, dass etwas in def update falsch ist aber ich finde es irgendwie nicht.
Könnte mir einer weiterhelfen?
from tkinter import *
import sqlite3
root = Tk()
root.title('Projektarbeit')
root.geometry("450x700")
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS Tasks (aufgabe TEXT , beschreibung TEXT , kategorie TEXT)")
def delete():
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
cur.execute("DELETE from Tasks WHERE oid= " + loeschen_box.get())
conn.commit()
conn.close()
def update():
# database connect
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
record_id = loeschen_box.get()
cur.execute("""UPDATE Tasks SET
aufgabe = :aufgabe,
beschreibung = :beschreibung,
kategorie = :kategorie
WHERE oid = :oid""",
{
'aufgabe': aufgabe_editor.get(),
'beschreibung': beschreibung_editor.get(),
'kategorie': kategorie_editor.get(),
'oid': record_id
})
conn.commit()
conn.close()
editor.destroy()
#CREATE EDIT
def edit():
global editor
editor = Tk()
editor.title('Projektarbeit (Task Edits)')
editor.geometry("450x700")
#database connect
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
record_id = loeschen_box.get()
cur.execute("SELECT * FROM Tasks WHERE oid = " + record_id)
records = cur.fetchall()
conn.commit()
conn.close()
#GLOBAL TEXT BOX NAMES
global aufgabe_editor
global beschreibung_editor
global kategorie_editor
# TEXT BOX LABEL
aufgabe_label = Label(editor, text="Aufgabe")
aufgabe_label.grid(row=2, column=0)
beschreibung_label = Label(editor, text="Beschreibung")
beschreibung_label.grid(row=3, column=0)
kategorie_label = Label(editor, text="Kategorie")
kategorie_label.grid(row=4, column=0)
# TEXT BOX
aufgabe_editor = Entry(editor, width=30)
aufgabe_editor.grid(row=2, column=1, padx=20)
beschreibung_editor = Entry(editor, width=30)
beschreibung_editor.grid(row=3, column=1, padx=20)
kategorie_editor = Entry(editor, width=30)
kategorie_editor.grid(row=4, column=1, padx=20)
# loop results
for record in records:
aufgabe_editor.insert(0, record[0])
beschreibung_editor.insert(0, record[1])
kategorie_editor.insert(0, record[2])
# Edit Save
edit_btn = Button(editor, text="Speichern", command=update)
edit_btn.grid(pady=2, ipady=2, ipadx=14, column=1, columnspan=1)
# CREATE SUBMIT FUNC FOR DB
def submit():
conn=sqlite3.connect("ToDoList.db")
cur = conn.cursor()
#INSERT INTO TABLE
cur.execute("INSERT INTO Tasks VALUES(:aufgabe, :beschreibung, :kategorie)",
{
'aufgabe': aufgabe.get(),
'beschreibung': beschreibung.get(),
'kategorie': kategorie.get()
})
conn.commit()
conn.close()
#clear text boxes
aufgabe.delete(0,END)
beschreibung.delete(0,END)
kategorie.delete(0,END)
#QUERY FUNKTION
def query():
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
#Query database
cur.execute("SELECT * , oid FROM Tasks")
records = cur.fetchall()
# print(records)
#Loop results
print_records = ''
for record in records:
print_records += str(record[0]) + " " + str(record[1]) + " " + str(record[2]) + " " + str(record[3]) + "\n"
query_label = Label(root, text=print_records)
query_label.grid(row=12, column=1)
conn.commit()
conn.close()
#TEXT BOX LABEL
aufgabe_label = Label(root, text="Aufgabe")
aufgabe_label.grid(row=2, column=0)
beschreibung_label = Label(root, text="Beschreibung")
beschreibung_label.grid(row=3, column=0)
kategorie_label = Label(root, text="Kategorie")
kategorie_label.grid(row=4, column=0)
#TEXT BOX
aufgabe=Entry(root, width=30)
aufgabe.grid(row=2, column=1, padx=20)
beschreibung=Entry(root, width=30)
beschreibung.grid(row=3, column=1, padx=20)
kategorie = Entry(root, width=30)
kategorie.grid(row=4, column=1, padx=20)
#CREATE SUBMIT BUTTON
submit_btn = Button(root, text="Hinzufügen", command=submit)
submit_btn.grid(pady=8, padx=1, ipady=2, ipadx=11, column=1, columnspan=1)
#QUERY BUTTON
query_btn = Button(root, text="Zeige Einträge", command=query)
query_btn.grid(pady=5, padx=10, ipady=2, ipadx=2,column=1, columnspan=1)
#Delete Tasks
loeschen_box_label = Label(root, text="Auswählen (ID Nummer)")
loeschen_box_label.grid(row=14, column=1, columnspan=1,pady=5)
loeschen_box = Entry(root, width=30)
loeschen_box.grid(row=15, column=1)
delete_btn = Button(root, text="Löschen", command=delete)
delete_btn.grid(pady=2, padx=1, ipady=2, ipadx=20,column=1, columnspan=1)
#Edit
edit_btn = Button(root, text="Bearbeiten", command=edit)
edit_btn.grid(pady=2, ipady=2, ipadx=14, column=1, columnspan=1)
conn.commit()
conn.close()
Könnte mir einer weiterhelfen?
from tkinter import *
import sqlite3
root = Tk()
root.title('Projektarbeit')
root.geometry("450x700")
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS Tasks (aufgabe TEXT , beschreibung TEXT , kategorie TEXT)")
def delete():
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
cur.execute("DELETE from Tasks WHERE oid= " + loeschen_box.get())
conn.commit()
conn.close()
def update():
# database connect
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
record_id = loeschen_box.get()
cur.execute("""UPDATE Tasks SET
aufgabe = :aufgabe,
beschreibung = :beschreibung,
kategorie = :kategorie
WHERE oid = :oid""",
{
'aufgabe': aufgabe_editor.get(),
'beschreibung': beschreibung_editor.get(),
'kategorie': kategorie_editor.get(),
'oid': record_id
})
conn.commit()
conn.close()
editor.destroy()
#CREATE EDIT
def edit():
global editor
editor = Tk()
editor.title('Projektarbeit (Task Edits)')
editor.geometry("450x700")
#database connect
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
record_id = loeschen_box.get()
cur.execute("SELECT * FROM Tasks WHERE oid = " + record_id)
records = cur.fetchall()
conn.commit()
conn.close()
#GLOBAL TEXT BOX NAMES
global aufgabe_editor
global beschreibung_editor
global kategorie_editor
# TEXT BOX LABEL
aufgabe_label = Label(editor, text="Aufgabe")
aufgabe_label.grid(row=2, column=0)
beschreibung_label = Label(editor, text="Beschreibung")
beschreibung_label.grid(row=3, column=0)
kategorie_label = Label(editor, text="Kategorie")
kategorie_label.grid(row=4, column=0)
# TEXT BOX
aufgabe_editor = Entry(editor, width=30)
aufgabe_editor.grid(row=2, column=1, padx=20)
beschreibung_editor = Entry(editor, width=30)
beschreibung_editor.grid(row=3, column=1, padx=20)
kategorie_editor = Entry(editor, width=30)
kategorie_editor.grid(row=4, column=1, padx=20)
# loop results
for record in records:
aufgabe_editor.insert(0, record[0])
beschreibung_editor.insert(0, record[1])
kategorie_editor.insert(0, record[2])
# Edit Save
edit_btn = Button(editor, text="Speichern", command=update)
edit_btn.grid(pady=2, ipady=2, ipadx=14, column=1, columnspan=1)
# CREATE SUBMIT FUNC FOR DB
def submit():
conn=sqlite3.connect("ToDoList.db")
cur = conn.cursor()
#INSERT INTO TABLE
cur.execute("INSERT INTO Tasks VALUES(:aufgabe, :beschreibung, :kategorie)",
{
'aufgabe': aufgabe.get(),
'beschreibung': beschreibung.get(),
'kategorie': kategorie.get()
})
conn.commit()
conn.close()
#clear text boxes
aufgabe.delete(0,END)
beschreibung.delete(0,END)
kategorie.delete(0,END)
#QUERY FUNKTION
def query():
conn = sqlite3.connect("ToDoList.db")
cur = conn.cursor()
#Query database
cur.execute("SELECT * , oid FROM Tasks")
records = cur.fetchall()
# print(records)
#Loop results
print_records = ''
for record in records:
print_records += str(record[0]) + " " + str(record[1]) + " " + str(record[2]) + " " + str(record[3]) + "\n"
query_label = Label(root, text=print_records)
query_label.grid(row=12, column=1)
conn.commit()
conn.close()
#TEXT BOX LABEL
aufgabe_label = Label(root, text="Aufgabe")
aufgabe_label.grid(row=2, column=0)
beschreibung_label = Label(root, text="Beschreibung")
beschreibung_label.grid(row=3, column=0)
kategorie_label = Label(root, text="Kategorie")
kategorie_label.grid(row=4, column=0)
#TEXT BOX
aufgabe=Entry(root, width=30)
aufgabe.grid(row=2, column=1, padx=20)
beschreibung=Entry(root, width=30)
beschreibung.grid(row=3, column=1, padx=20)
kategorie = Entry(root, width=30)
kategorie.grid(row=4, column=1, padx=20)
#CREATE SUBMIT BUTTON
submit_btn = Button(root, text="Hinzufügen", command=submit)
submit_btn.grid(pady=8, padx=1, ipady=2, ipadx=11, column=1, columnspan=1)
#QUERY BUTTON
query_btn = Button(root, text="Zeige Einträge", command=query)
query_btn.grid(pady=5, padx=10, ipady=2, ipadx=2,column=1, columnspan=1)
#Delete Tasks
loeschen_box_label = Label(root, text="Auswählen (ID Nummer)")
loeschen_box_label.grid(row=14, column=1, columnspan=1,pady=5)
loeschen_box = Entry(root, width=30)
loeschen_box.grid(row=15, column=1)
delete_btn = Button(root, text="Löschen", command=delete)
delete_btn.grid(pady=2, padx=1, ipady=2, ipadx=20,column=1, columnspan=1)
#Edit
edit_btn = Button(root, text="Bearbeiten", command=edit)
edit_btn.grid(pady=2, ipady=2, ipadx=14, column=1, columnspan=1)
conn.commit()
conn.close()