TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
Module imports: | from dbtable import* |
Abstraktion von Datenbank-Tabellen ohne SQL
Befehl | Aktion |
tbl = DbTable(fieldname1, fieldname2,...) | erzeugt ein Tabellenobjekt mit beliebig vielen Feldnamen (als String). Die Feldnamen können in ein Tupel gepackt sein |
tbl = DbTable(anotherTable) | erzeugt einen (tiefen) Klone des Tabellenobjekts |
tbl = DbTable() | erzeugt eine leere Tabelle, die für restore(), restoreFromTJ() oder importFromCSV() verwendet werden kann |
tbl.insert(value1, value2,...) | fügt eine Zeile mit den gegebenen Werten in die Tabelle. Die Werte können in ein Tupel gepackt sein. Erlaubte Datentypen: str, int, float, BLOB (binär). Es müssen die Werte aller Felder angegeben werden. Aus der zuerst eingegenen Zeile wird der Datentyp der Felder bestimmt. Binäre Felderwerte sind Bytearrays (Rückgabewert von getBytes(filename)) |
tbl.insertMany(liste) | fügt mehrere Zeilen, die in liste (oder tuple) enthalten sind (beispielsweise von einer select() Rückgabe). Aus der zuerst eingegenen Zeile wird der Datentyp der Felder bestimmt (int, float oder str) |
for row in tbl: do_something_ with row.fieldname |
Durchlaufen aller Zeilen und Verwenden der Feldwerte |
tbl.select(fieldname1, fieldname2, ..., pattern) | gibt ein Tupel aller Zeilen mit den angegebenen Feldern zurück. Wird mit sort() ein Sortierattribut angegeben, so werden die Zeilen in der Sortierreihenfolge zurückgegeben. pattern ist eine Sequenz mit Gleichheitsbedingungen attribute = wert. Falls ein Attribut fehlt, erfüllen alle Werte die Bedingung. Beispiel: select("name", "vorname", "alter", name = "Meyer", vorname = "Hans") gibt die Felder "name", "vorname" und "alter" aller "Meyer Hans" zurück. Die Werte haben den Datentyp str, int oder float |
tbl.sort(fieldname) | definiert einen Feldnamen (String) als Sortierattribut. Tabellenansichten und select() werden nachher in aufsteigender Reihenfolge dieses Attributs ausgegeben. Ohne Angabe eines Sortierattributs, ist die Reihenfolge der Zeilen undefiniert (aber normalerweise in der Reihenfolge der mit insert() eingefügten Zeilen) |
tbl.sort(fieldname, False) | dasselbe, aber in absteigender Reihenfolge |
tbl.getAttributes() | gibt ein Tupel mit den Feldnamen (Attributen) zurück |
tbl.view() | zeigt die Tabellenwerte formatiert in der Konsole (sortiert gemäss einem Sortierattribut) |
tbl.view(fieldname1, fieldname2, ..., pattern) | dasselbe, aber es werden nur die angegebenen Felder von Zeilen angezeigt, welche die Gleichheitsbedingungen erfüllen (wie select()) |
tbl.getView() | dasselbe, aber Rückgabe als formatieren String |
tbl.getView(fieldname1, fieldname2, ..., pattern) | dasselbe, aber es werden nur die angegebenen Felder von Zeilen zurück gegeben, welche die Gleichheitsbedingungen erfüllen (wie select()) |
print tbl | dasselbe wie tbl.view() |
len(tbl) | gibt die Anzahl Tabellenzeilen zurück |
tbl.delete(pattern) | löscht alle Zeilen, welche die Gleichheitsbedingungen in pattern erfüllen (wie bei select()). Beispiel: delete(name = "Meyer", vorname = "Hans" löscht alle Zeilen mit Meyer Hans. |
tbl.update(pattern)(fieldname1 = value1, fieldname2 = value2,...) | ersetzt die Werte der gegebenen Feldnamen. pattern ist wie in select() definiert. Beispiel: update(name = "Meyer", vorname = "Hans")(wohnort = "Basel") setzt den Wohnort aller "Meyer Hans" auf "Basel" |
tbl.join(otherTable, left, right) | gibt eine Tabelle zurück, die einer Tabellenverbindung (join) der vorhandenen Tabelle mit otherTable entspricht, wobei die attribute left und right übereinstimmen müssen. Die Vergleichsattribute werden nicht übernommen. Beispiel: person.join(sport, person.id = sport.id) |
tbl.join(otherTable, left, right, True) | dasselbe, aber es werden auch die Vergleichsattribute übernommen (diese müssen unterschiedliche Namen haben) |
tbl.join(otherTable) | dasselbe, aber es werden alle Zeilen beider Tabellen miteinander verbunden (Kreuzprodukt) |
tbl.saveTable(databaseName, tableName) |
speichert die Werte aus table in einer SQL-Datenbanktabelle einer SQLite-Datenbank mit gegebenen Dateinamen unter dem gegebenen SQLite-Datenbank-Tabellennamen. Falls die Datenbank nicht existiert, wird sie erzeugt. Eine bestehende Tabelle mit gleichem Namen wir gelöscht. Die Feldnamen (Attribute) und Datentypen werden übernommen. Wird tableName nicht angegeben, so wird der Variablenname als SQLite-Tabellenname verwendet |
tbl.restoreTable(databaseName, tableName) | holt die mit saveTable() in der SQLite-Datenbank gespeicherten Werte aus der gegebenen SQLite-Datenbank-Tabelle und gibt ein DbTable-Objekt mit den wiederhergestellten Feldnamen (Attributen) zurück. Wird tableName nicht angegeben, so wird der Variablen als SQLite-Tabellenname verwendet. |
tbl.restoreFromTJ(databaseName, tableName) | dasselbe, aber die Datenbank wird zuerst aus der TigerJython-Distribution (tigerjython2.jar) geholt und in das Verzeichnis des Programms kopiert |
tbl.importFromCSV(filename, delimiter) |
importiert den Inhalt einer CSV-Datei (Textdatei). Die Felder müssen durch das Trennzeichen delimiter getrennt sein. Jede Zeile muss genau die gleiche Anzahl Felder haben. Aus der ersten Zeile wird der Typ der Felder (int, float, str) ermittelt |
tbl.exportToCSV(filename, delimiter, fieldname1, fieldname2, ..., pattern) | exportiert die Tabellendaten in eine CSV-Datei, wobei die Felder mit dem angegebenen Trennzeichen getrennt sind. Es werden nur die angegebenen Felder übernommen. pattern ist eine Sequenz mit Gleichheitsbedingungen attribute = wert. Fehlen fieldname und pattern, so wird die ganze Tabelle übernommen (wie bei select()) |
getBytes(filename) | gibt einen Bytearray (Typ array.arrray) der Datei filename zurück (absoluter oder relativer Pfad bezüglich des Verzeichnis, in dem sich das Programm befindet) |
storeBytes(buffer, filename) | schreibt den Bytearray (Typ array.arrray) in die Datei filename (ersetzt vorhandene Datei) |
showDbInfo(database) | schreibt von einer Datenbank alle Tabellennamen und ihre Feldnamen aus |
showDbInfoTJ(database) | schreibt von einer Datenbank in der TigerJython-Distribution alle Tabellennamen und ihre Feldnamen (Attribute) aus |
Tabellen der Datenbank tigerjython.db (in tigerjython2.jar integriert)
restoreFromTJ("tigerjython.db")
Tabelle | Feldnamen | Anzahl Datensätze |
babynames | rank, forename | 100 |
boynames | rank, forename | 50 |
girlnames | rank, forename | 50 |
firstnames | fname, fwoman, fman | 54'379 |
flags | country_code, flag | 248 |
countries | country_en, country_de, country_code, continent, capital, .... | 249 |
capitals | city_en, city_de, country_code, population... | 240 |
meantemp | country, 1900, 1901, 1902, ....2015 | 89 |
mountains | name, county, hight | 28 |
topsongs | title, artist, rank | 100 |