Re: Tkinter: Falsche Anordnung in my_tree nach Schließung der Anwendung
Verfasst: Donnerstag 8. Juni 2023, 12:02
Selbst wenn man den ORM-Teil von SQLAlchemy nicht verwenden möchte, bügelt das ja die Unterscheide zwischen den DBMS glatt und erleichtert es dynamisch Anfangen zusammen zu basteln, ohne auf Zeichenkettenoperationen zurückgreifen zu müssen.
Mein letztes Beispiel ohne ORM (ungetestet):
Mein letztes Beispiel ohne ORM (ungetestet):
Code: Alles auswählen
import tkinter as tk
from tkinter import messagebox
from sqlalchemy import (
INT,
VARCHAR,
Column,
MetaData,
Table,
delete,
insert,
select,
)
META_DATA = MetaData()
STUDENT_TABLE = Table(
"dbo.student",
META_DATA,
Column("id", INT, primary_key=True),
Column("firstname", VARCHAR, nullable=False),
Column("lastname", VARCHAR, nullable=False),
Column("address", VARCHAR, nullable=False),
)
def create_student_table(engine):
STUDENT_TABLE.create(engine, checkfirst=True)
print("Table 'Student' created succesfully.")
def add_student(db_connection, student_tree, textboxes):
firstname, lastname, address = [
textbox.get().strip() for textbox in textboxes
]
if not all(firstname, lastname, address):
messagebox.showinfo("Error", "Please fill out all the fields!")
else:
try:
result = db_connection.execute(
insert(STUDENT_TABLE).values(
firstname=firstname, lastname=lastname, address=address
)
)
db_connection.commit()
except Exception as error:
messagebox.showinfo("Error", f"Failed to add data: {error}")
else:
messagebox.showinfo("Data added succesfully!")
student_tree.insert(
"",
tk.END,
values=(
result.inserted_primary_key.id,
firstname,
lastname,
address,
),
)
def del_student(db_connection, student_tree):
selection = student_tree.focus()
if selection:
delete(STUDENT_TABLE).where(
STUDENT_TABLE.c.id
== int(student_tree.item(selection)["values"][0])
)
db_connection.commit()
student_tree.delete(selection)
def load_students(db_connection, student_tree):
for student in db_connection.execute(select(STUDENT_TABLE)):
student_tree.insert(
"",
tk.END,
values=(
student.id,
student.firstname,
student.lastname,
student.address,
),
)