LU06.A03 - ToDo-Liste mit SQLite und DAO-Klassen
In dieser Übung wirst du eine einfache ToDo-Liste implementieren, die SQLite als Datenbank verwendet. Du wirst eine DAO-Klasse erstellen, die die CRUD-Operationen (Create, Read, Update, Delete) für die ToDo-Elemente handhabt.
Detaillierte Aufgabenstellung
- Erstelle eine
TodoItem
-Klasse mit den Attributenitem_id
,title
undis_completed
. - Verwende den
@dataclass
-Dekorator für dieTodoItem
-Klasse. - Erstelle eine
TodoDao
-Klasse, die die CRUD-Operationen für dieTodoItem
-Elemente handhabt. - Implementiere die folgenden Funktionen in der
TodoDao
-Klasse:create_table()
: Erstellt die Tabelle, falls sie nicht existiert.add_item()
: Fügt ein neues ToDo-Element zur Datenbank hinzu.get_item()
: Ruft ein ToDo-Element anhand seiner ID ab.get_all_items()
: Ruft alle ToDo-Elemente aus der Datenbank ab.update_item()
: Aktualisiert ein bestehendes ToDo-Element.delete_item()
: Löscht ein ToDo-Element anhand seiner ID.close()
: Schließt die Datenbankverbindung.
Code-Vorlage
Main
- main.py
from todoItem import TodoItem from todoDao import TodoDao def main(): # DAO-Instanz erstellen und Tabelle erstellen dao = TodoDao('todo_example.db') dao.create_table() # Neues ToDo-Element hinzufügen new_item = TodoItem(None, 'Buy milk', False) dao.add_item(new_item) new_item = TodoItem(None, 'Buy cheese', False) dao.add_item(new_item) # ToDo-Element abrufen retrieved_item = dao.get_item(1) if retrieved_item: print( f"Item ID: {retrieved_item.item_id}, Title: {retrieved_item.title}, Is Completed: {retrieved_item.is_completed}") # Alle ToDo-Elemente abrufen all_items = dao.get_all_items() print("All items:") for item in all_items: print(f"Item ID: {item.item_id}, Title: {item.title}, Is Completed: {item.is_completed}") # ToDo-Element aktualisieren retrieved_item.is_completed = True is_updated = dao.update_item(retrieved_item) print(f"Was the item updated? {is_updated}") # ToDo-Element löschen is_deleted = dao.delete_item(1) print(f"Was the item deleted? {is_deleted}") # Verbindung schließen dao.close() # Ausführung der Hauptlogik if __name__ == '__main__': main()
todoDao
- todoDao.py
import sqlite3 from todoItem import TodoItem # TODO: Implementiere die TodoDao-Klasse für CRUD-Operationen class TodoDao: ...
todoItem
- todoItem.py
from dataclasses import dataclass # TODO: Implementiere die TodoItem-Klasse mit @dataclass @dataclass class TodoItem: ...
Vorgehen
- Akzeptiere das GitHub Classroom Assignment
- Klone dein persönliches Repository in die Entwicklungsumgebung
- Beginne mit der Implementierung der
TodoItem
-Klasse. Verwende den@dataclass
-Dekorator. - Erstelle die
TodoDao
-Klasse und implementiere die Methodecreate_table()
. - Füge die Methoden
add_item()
,get_item()
,get_all_items()
,update_item()
unddelete_item()
zurTodoDao
-Klasse hinzu. - Teste alle Methoden, um sicherzustellen, dass sie wie erwartet funktionieren.
Abgabe
Die Abgabe der Lösung erfolgt als Push in das persönliche GitHub-Repository.
⇒ GitHub Repo für externe Besucher
GitHub Repository https://github.com/templates-python/m323-lu06-a03-dao
Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden