tabellen

3. TABELLEN ERSTELLEN

 

 

DU LERNST HIER...

 

wie man Informationen in einer Datenbank dauerhaft abspeichern kann und wie man später wieder darauf zurückgreift. Dazu erstellst du eine Tabelle mit Personendaten, fügst Datensätze hinzu und speicherst die Tabelle in einer Datenbank.

 

 

MUSTERBEISPIEL

 

Du möchtest die Personendaten deiner Klassenkameraden in einer Datenbank abspeichern. Dabei verwendest du Namen, Vornamen, Wohnort, Geschlecht und Jahrgang. Als erstes erstellst du eine Tabelleninstanz von DbTable, wo du die Feldnamen festlegst. Gewöhnlich wird ein vielsagender Feldname gewählt, der allerdings meist klein geschrieben wird und sich an die Regeln für Variablenamen halten muss, also keine Umlaute und Spezialzeichen enthalten darf. In Personentabellen ist es üblich, ein zusätzliches Feld id mit ganzen Zahlen 1, 2, 3. ... aufzunehmen, damit die Personen über diese Zahl eindeutig identifiziert werden können.

Mit dem Befehl insert() fügst du einzelne Personen in die Tabelle, wobei die Reihenfolge der Parameter derjenigen der Felder entsprechen muss. Du kannst natürlich auch andere Personen einfügen, z.B. dich selbst in die Tabelle aufnehmen. Nach dem Einfügen schreibst du die Tabelle zur Kontrolle im Ausgabefenster aus.

Am Schluss speicherst du die Tabelleninformationen in einer Datenbank mit dem Namen schule.db, die beim Abspeichern mit save() erzeugt wird. Ohne zusätzlichen Speicherort-Angaben wird die Datei im Unterverzeichnis \bin des TigerJython-Installationsverzeichnisses gespeichert. Du kannst aber für deine Datenbank-Dateien auch ein Verzeichnis einrichten, zum Beispiel c:\dbEx und den vollständigen Pfad eingaben:
person.save('c:\\dbEx\\schule.db')
In den nachfolgenden Programmen kannst du die Daten unter diesem Datenamen wieder finden.

from dbtable import *

persons = DbTable('id', 'name', 'vorname', 'wohnort', 'geschlecht', 'jahrgang') 
persons.insert(1,'Huber','Lia','Bern','w', 2002)
persons.insert(2,'Meier','Luca','Basel','m', 2003)
persons.insert(3,'Frech','Tim','Bern','m', 2000)
persons.insert(4,'Bauer','Jan','Luzern','m', 2003)
persons.insert(5,'Zwahlen','Noah','Thun','m', 2002)
persons.insert(6,'Meier','Nina','Biel','w', 2001) 
print(persons)
persons.save('schule.db')         
► In Zwischenablage kopieren

 

Ergebnis:

 id  name  vorname  wohnort  geschlecht  jahrgang
 1  Huber  Lia  Bern  w  2002
 2  Meier  Luca  Basel  m  2003
 3  Frech  Tim  Bern  m  2000
 4  Bauer  Jan  Luzern  m  2003
 5  Zwahlen  Noah  Thun  m  2002
 6  Meier  Nina  Biel  w  2001

Mit einem Dateimanager kannst du überprüfen, dass im Programmverzeichnis tatsächlich eine Datei schule.db entstanden ist.

Wesentliches Merkmal von Datenbanken ist, dass die Daten nach Ende des Programms dauerhaft abgespeichert sind  Du kannst also den Computer abschalten und später wieder auf deine Personendatenbank schule.db zugreifen. Du kannst diese Datei sogar auf den Computer eines Klassenkameraden kopieren und er kann die Daten dort verwenden. Dazu verwendest du den Befehl restore(), um die Daten aus der Datenbank wieder in ein DbTable-Objekt zurück zu holen. Du musst als Variablenname persons wählen, da in der Datenbank die Tabelle mit diesem Namen abgelegt wurde.

from dbtable import *

persons = DbTable()
persons.restore("schule.db")
print(persons)
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Beim Erzeugen einer Tabelle müssen die Feldnamen festgelegt werden. In den Feldern können nur ganze Zahlen (int), Dezimalzahlen (float) und Zeichenketten (str) verwendet werden. Später wirst du auch lernen, wie man Bilder abspeichern kann. Mit save() speicherst du die Tabellendaten in der angegebenen Datenbank ab, mit restore() kannst du Daten jederzeit später mit einem anderen Programm wieder herstellen.

Natürlich kannst du die Datei schule.db auch auf einen anderen Computer kopieren und von dort mit einem Programm im gleichen Verzeichnis auf die abgelegten Daten zurückgreifen.      

 

 

ZUM SELBST LÖSEN

 

1.

Füge in die Tabelle persons zwei weitere Datensätze ein. Zum Beispiel:

 id  name  vorname  wohnort  geschlecht  jahrgang
 8  Amsler  Fabio  Bern  m  2005
 9  Meier  Nina  Aargau  w  2003

2.

Schreibe ein Programm, um die Personendaten wieder zu holen und sortiert nach dem Namen im Ausgabefenster auszuschreiben.


   

 

3-1
Fachliche Hinweise:

Es handelt sich um eine Datenbank von SQLite, einem insbesondere auf Smartphones weit verbreiteten Datenbank-System zur lokalen Verwaltung von Daten, das keinen Datenbankserver benötigt. Mit einem Datenbank-Browser, beispielsweise DBBrowser for SQLite (download von http://sqlitebrowser.org), kann man die Datenbank untersuchen. Man erkennt, dass beim Speichern der Tabelleninstanz persons eine Datenbank-Tabelle "persons" mit den entsprechenden Datensätzen entstanden ist. Beim wiederholten Speichern wir die vorhergehende Datenbanktabelle zuerst gelöscht.

3-2
Didaktische Hinweise:

Beim Abspeichern in der SQLite-Datenbank wird der Variablenname als Tabellenname verwendet. Es ist aber didaktisch besser, gar nicht von der Tabelle zu sprechen, die in der SQLite-Datenbank erzeugt wird, sondern nur, dass das DbTable-Objekt gespeichert und wieder hergestellt wird.

3-3
Fachliche Hinweise:

Der Datentyp der Felder der internen SQLite-Tabelle wird aus dem ersten eingegebenen Datensatz bestimmt.  

3-4
Fachliche Hinweise:

Die Variante mit der Pfad-Angabe muss du insbesondere dann verwenden, wenn TigerJython im Ordner installiert ist, in dem du keine Schreibreche hast, z.B. c:\Program Files.