DATENBANKEN ÜBERALL |
|
TABELLEN VERWENDEN |
Informationen werden als Daten in einer Datenbank oft in Tabellenform abgespeichert. Du kennst Tabellen aus dem täglichen Leben und weisst, dass Tabellen in Zeilen und Spalten strukturiert sind.
|
AUFGABE 1: |
Merke dir die oben notierten Begriffe. Das TigerJython-Modul DbTable enthält Befehle, die es ermöglichen, auf eine einfache Art mit Datenbanktabellen umzugehen. Um diese Befehle verwenden zu können, musst du das Modul dbtable importieren: from dbtable import * Damit du die Daten nicht selbst eintippen musst, kannst du zuerst mit topsongs = DbTable() ein leeres Tabellenobjekt erzeugen und dann mit dem Befehl restoreFromTJ() die Daten aus der Distribution von TigerJython holen. topsongs.restoreFromTJ("tigerjython.db") Schliesslich stellst du die Tabelle im Ausgabefenster mit dem view-Befehl dar: topsongs.view() Zusammengefasst: from dbtable import * topsongs = DbTable() topsongs.restoreFromTJ("tigerjython.db") topsongs.view() |
AUFGABE 2 |
Führe das Programm aus und betrachte die Tabelle im Ausgabefenster. FRAGE 3: Nach welcher Spalte ist die Tabelle sortiert? FRAGE 4: Welches sind die fünf beliebtesten Songs? FRAGE 5: Wie viele Songs werden von Justin Bieber gesungen? Um die Fragen 4 und 5 zu beantworten, musst du ziemlich viel "Knochenarbeit" leisten. Stell dir vor, wie es wäre, wenn die Tabelle 100'000 Zeilen hätte! In deinem Programm kannst du den Computer mit einem einzigen Befehl anweisen, die Tabelle zu sortieren. Willst du sie beispielsweise in der Reihenfolge der Spalte rank sortieren lassen, so schreibst du topsongs.sort("rank") Du kannst auch verlangen, dass nur Zeilen ausgeschrieben werden, die eine bestimmte Bedingung erfüllen, beispielsweise dass der Sänger Justin Bieber heisst. Du schreibst dazu topsongs.view(artist = "Justin Bieber") |
AUFGABE 3 |
Löse Fragen 4 und 5 mit einem Programm. |
TABELLEN SPEICHERN UND WIEDER HOLEN |
Tabellenvariablen verhalten sich gleich wie andere Programmvariable. Wie du weisst, gehen Variablenwert bei Programmende verloren. Damit du die Tabellendaten in einem anderen Programmlauf wieder verwenden kannst, musst du daher die Tabelle in einer Datenbankdatei speichern. Die Tabelle topsongs kannst du beispielsweise in der Datenbankdatei mediathek.db wie folgt speichern: topsongs.save("mediathek.db") Statt Datenbankdatei sagt man auch nur kurz Datenbank und du findest diese nach dem save-Befehl im gleichen Verzeichnis wie dein Programm. Um die Tabelle in einem anderen Programm wieder zu verwenden, holst du ihre Werte mit topsongs = DbTable() zurück. |
AUFGABE 4 |
|
AUFGABE 5 |
Hole die Tabelle topsongs aus der Datenbank mediathek.db zurück und schreibe sie im Ausgabefenster aus. Beachte, dass die Tabelle jetzt nach Rang sortiert ist. |
DATENSÄTZE LÖSCHEN |
|
AUFGABE 6 |
Hole die Tabelle topsongs aus der Datenbank mediathek.db zurück und lösche alle Songs, die von Justin Bieber gesungen werden. Zeige die Tabelle an, aber speichere sie nicht, damit du immer noch die unveränderte Datenbank verwenden kannst. |
DATENSÄTZE EINFÜGEN |
|
AUFGABE 7 |
Füge einige deiner beliebtesten Songs ein. Achte darauf, dass die Rangliste immer noch richtig bleibt, dass also nicht zwei Songs denselben Rang belegen. Du kannst auch bestimmte Songs löschen. Speichere die Tabelle zuletzt in der Datenbank mediathek1.db ab. |
DATENSÄTZE DURCHLAUFEN |
|
AUFGABE 8 |
Sortiere die Tabelle nach Rang und schreibe dann Titel und Sänger zeilenweise aus. Beim Durchlaufen mit der for-Schleife kannst du mit if-Anweisungen beliebige Bedingungen ausprogrammieren. Sollen z.B. nur die Songs von Justin Bieber angezeigt werden, so schreibst du: if record.artist == "Justin Bieber": print record.rank, record.title |
AUFGABE 9 |
Schreibe die Felder title, artist für die ersten 10 Songs der Hitliste aus. Natürlich kannst du diese Aufgaben auch mit deiner eigenen Datenbank mediathek1.db lösen. |
PERSONENDATENBANK MIT FOTOS |
Um eine eigene neue Datenbank persons mit den Feldern name, vorname, alter, foto anzulegen, die den Familiennamen, Vornamen, das Alter und ein Bild der Person enthält, erstellst du zuerst eine Tabelle mit den gewünschten Feldern: persons = DbTable("name", "vorname", "alter", "image") Nun kannst du einzelne Personen in die Tabelle einfügen, benötigst aber von allen ein Bild (im Format GIF, PNG oder JPG). Die Bilddatei befindet sich im gleichen Verzeichnis wie dein Programm (beispielsweise für die vierzehnjährige Kunz Anna als anna.png). Das Bild musst du zuerst mit getBytes() von der Datei in eine Variable einlesen und kannst es dann in den Datensatz einfügen. annaPict = getBytes("anna.png") persons.insert("Kunz", "Anna", 14, annaPict) Anmerkung: Falls du gerade keine Bilder hast, so kannst du einige Comics-Bilder von hier downloaden und im Programmverzeichnis auspacken. Du musst die Bilder eventuell umbenennen. |
AUFGABE 10 |
Füge einige Datensätze von dir und deinen Kameraden ein und speichere die Tabelle in der Datenbank kameraden.db. Da das Foto in digitalisierter Form in der Datenbank gespeichert ist, wird es beim Ausschreiben der Tabelle mit view() nicht als Foto dargestellt. Um das Bild zu sehen, benötigst du ein Grafikfenster, am einfachsten ein dir bekanntes Turtlefenster. Mit dem Turtlebefehl drawImage() kannst du an der aktuellen Position der Turtle das Bild erscheinen lassen. Als Vorlage verwendest du folgendes Programm: from dbtable import * from gturtle import * makeTurtle() ht() persons = DbTable() persons.restore('kameraden.db') x = -320 for record in person: setPos(x, 0) drawImage(record.image) x += 130 |
AUFGABE 11 |
Zeige die Personenbilder aus deiner Datenbank an. Schreibe dann unter jedem Bild auch noch Vornamen und Namen aus (mit dem Turtlebefehl label()). |
AUFGABE 12 |
Schreibe ein Programm, dass in einem Eingabedialog nach einem Vornamen fragt und dann die betreffende Person anzeigt. |
AUFGABE 13 |
Erweitere die Personendatenbank und das Abfragen und Anzeigen von Personen nach deinen eigenen Vorstellungen. |
PERSONENDATENBANK ANDEREN ZUR VERFÜGUNG STELLEN |
|
AUFGABE 14 |
Erstelle ein Dropbox-Konto und synchronisiere deine Datenbank. Stelle die Daten anderen Benutzern über das Internet zur Verfügung.
|
Es ist naheliegend, eine Tabelle als ein Objekt aufzufassen, das bestimmte Eigenschaften (eben die Daten) und Befehle zur Manipulation der Tabelle hat. Daher werden in TigerJython Tabellen als Objekte von der Klasse DbTable modelliert. Um diese Klasse zu verwenden, muss man das Modul dbtable importieren.