TigerJython | xx für Gymnasien |
Die INSERT - Anweisung fügt in eine bestehende Tabelle Datensätze ein. Allgemeine Form:
INSERT INTO tabelle (feld1, feld2, ...) VALUES (wert1, wert2, ...)
Durch die Angabe der Feldnamen im ersten Teil der Anweisung legt man fest, in welches Feld die Werte eingetragen werden sollen. Die Reihenfolge der Werte muss mit der Reihenfolge der Felder übereinstimmen. Werte der Felder, die als INTEGER definiert wurden, müssen ganze Zahlen sein. Texte werden in Anführungszeichen eingegeben. Da das Feld id als PRIMARY KEY definiert wurde, kann man die id-Zahl bei der Eingabe weglassen. Das System setzt automatisch als sogenannter AUTO_INCREMENT die nächste grössere Zahl ein.
In unserem Programm werden mit einer INSERT-Anweisung mehrere Datensätze eingefügt. Die dreifache Anführungszeichen ermöglichen es, die INSERT-Anweisung auf mehrere Zeilen zu verteilen.
Zur Kontrolle, ob sich die Daten in der Datenbank befinden, verwendet man den Befehl SELECT. Nach dessen Aufruf erhält man einen Resultset, auf den man mit dem Datenbank-Cursor zugreifen kann. Der Aufruf cursor.fetchall() liefert alle Datensätze als Liste. Diese Liste liste kann mit einer for-Schleife Element um Element durchgelaufen und im Ausgabefenster angezeigt werden.
Beispiel 1: Datensätze in die Tabelle person einfügen
# InsertPersonEx1.py from sqlite3 import * with connect("demo.db") as con: cursor = con.cursor() cursor.execute("""INSERT INTO person (name,vorname,wohnort,geschlecht,jahrgang) VALUES ('Huber','Lia','Bern','w', 2002), ('Meier','Luca','Basel','m', 2003), ('Frech','Marc','Bern','m', 2000), ('Bauer','Paul','Luzern','m', 2003), ('Zwahlen','Noah','Thun','m', 2002), ('Meier','Nina','Biel','w', 2001)""") cursor.execute("SELECT * FROM person") resultset = cursor.fetchall() for record in resultset: print(record) |
Programmcode markieren
|
SELECT * FROM person alle Datensätze werden ausgewählt | |
resultset = cursor.fetchall() liefert die ausgewählten Datensätze als Liste |
Beispiel 2: Weitere Datensätze einfügen
Der Befehl INSERT kann mit neuen Werten aufgerufen werden. Dabei werden in die bestehende Tabelle weitere Datensätze eingefügt. Das Ergebnis wird hier in Tabellenform angezeigt. Dazu verwendet man den Befehl printTable() aus dem Modul prettytable. Da printTable() den Datenbank-Cursor verwendet, muss sich der Aufruf innerhalb des with-Blocks befinden. Achtung: Wenn man die Programme mit den gleichen Daten mehrmals nach einander ausführt, sind die gleichen Datensätze mehrmals vorhanden. In diesem Fall ist es am einfachsten, die Tabelle Person löschen, neu erstellen und die beide Programme nur einmal auszuführen. |
# InsertPersonEx2.py from sqlite3 import * from prettytable import printTable with connect("demo.db") as con: cursor = con.cursor() cursor.execute("""INSERT INTO person (name,vorname,wohnort,geschlecht,jahrgang) VALUES ('Neuhaus','Lucia','Aarau','w', 2004), ('Hubacher','Julia','Zug','w', 2002)""") tab = cursor.execute("SELECT * FROM person") printTable(tab) |
Programmcode markieren
|
from prettytable import printTable : importiert den Befehl print Table aus dem Modul prettytable. | |
printTable(cursor) : formatiert die Tabellendaten als String und gibt sie im Ausgabefenster aus |
Bemerkung:
Im Internet findet man einige Tools, mit welchen man die SQLite-Tabellen anschauen und bearbeiten kann.
Beispielsweise DBBrowser for SQLite (Download unter http://sqlitebrowser.org/)