Tools für SQLite3 – SQLite Shell
SQLite bietet eine Shell. Diese kann direkt im Terminalfenster gestartet werden über
sqlite3
Danach erscheint im Terminalfenster dann:
Axels-MBP:Python-lernen.de axel$ sqlite3
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
Jetzt können wir mit .help
uns alle Befehle ansehen, die uns die sqlite3-Shell bietet.
Wir können alle Funktionen, die wir über den Umweg von Python kennengelernt haben auch direkt in der SQLite3-Shell ausführen. Wollen wir unsere erstellte Datenbank „geburtstage.db“ nutzen, müssen wir diese laden. Da wir diese in einem Unterordner gespeichert haben, müssen wir beim Pfad den Unterordner mit angeben:
.open datenbank/geburtstage.db
Bitte nicht wundern, wenn wir kein Feedback von der Shell bekommen:
sqlite> .open datenbank/geburtstage.db
sqlite>
Wir erhalten automatisch die Möglichkeit, den nächsten Befehl anzugeben.
Jetzt können wir uns die Datenbanken anzeigen lassen über:
.databases
Als Rückmeldung erhalte ich auf meinem System dann:
sqlite> .databases
main: /Users/axel/Documents/Python-lernen.de/datenbank/geburtstage.db
Haben wir die erstellten Tabellen vergessen, erhalten wir über den Befehl .tables
eine Auflistung aller in der Datenbank vorhandenen Tabellen:
sqlite> .tables
adressen personen
Und jetzt können wir bereits direkt mit weiteren SQL-Anweisungen die Tabelle auslesen. Lassen wir uns den Inhalt komplett anzeigen:
sqlite> SELECT * FROM personen;
Johann Christoph Friedrich|Schiller|10.11.1759
Wir bekommen den Datensatz von „Schiller“ angezeigt.
…> - was geht?
Bekommen wir allerdings versehentlich nur als Ausgabe „…>“ haben wir ein abschließendes Semikolon vergessen. Einfach einmal probieren:
sqlite> SELECT * FROM adressen
...>
...> ;
Um wieder die normalen Shell-Eingaben machen zu können, müssen wir das anschließende Semikolon angeben!
sqlite> SELECT * FROM adressen
...>
...> ;
sqlite>
SQLite-Shell beenden: .quit
Um die Shell zu beenden, einfach in der Eingabeaufforderung .quit
eingeben. Somit sind wir im normalen Terminal zurück.
sqlite> .quit
Axels-MBP:Python-lernen.de axel$
Bessere Ausgabe der Daten in SQLite3-Shell aktivieren
Bei unserem letzten Test kamen die Daten sehr unübersichtlich in der Ausgabe. Wir können aber eine wesentlich bessere Übersicht bekommen, wenn wir den Spalten-Modus aktivieren über .mode column
und uns zusätzlich die Spaltenbezeichnungen ausgeben lassen über die Anweisung .headers on
.
Schauen wir es uns an:
sqlite> .open datenbank/geburtstage.db
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM personen;
vorname nachname geburtstag
-------------------------- ---------- ----------
Johann Christoph Friedrich Schiller 10.11.1759
sqlite>
Einstellungen (und Änderungsmöglichkeiten)
Über die Shell-Anweisung .show
bekommen wir weitere Informationen über die Anzeige und über die aktuell gewählte Datenbank:
sqlite> .show
echo: off
eqp: off
explain: auto
headers: on
mode: column
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: datenbank/geburtstage.db
sqlite>
Hier können wir nach Bedarf auch Änderungen durchführen. Beispielsweise können wir den Trenner, der als Zeichen „|“ verwendet umstellen über die Anweisung .separator ^
Direkt aus Shell starten
Gerade sind wir in mehreren Schritten zu unserem Ergebnis gekommen. Wir können auch direkt aus unserem Terminal (CMD-Line unter Windows) eine komplette SQL-Ausgabe erreichen. Dazu nutzen wird folgenden Aufbau:
sqlite3 datenbankname.db "SELECT * FROM tabellennamen"