Python Tutorial
- jetzt Python programmieren lernen

Datenbank auslesen und anzeigen: SELECT * FROM

Wir wollen eine Datenbank auslesen und anzeigen. Dazu müssen wir auswählen, was angezeigt werden soll. Wir selektieren (engl. „select“) also eine Teilmenge (oder auch die kompletten Datensätze) unserer Datenbank. Am Anfang sind wir nicht wählerisch und nehmen alle Felder – sprich „Alles“ wird über den Stern „*“ ausgewählt. Jetzt müssen wir noch unsere SQL-Anweisung mitgeben, von welcher Tabelle etwas ausgelesen wird („von“ = engl. „from“):

SELECT * FROM tabellennamen

In unserem bisherigen Beispiel wäre das:

zeiger.execute("SELECT * FROM personen")

Und nun „holen“ wir die Daten ab und übergeben diese einer Liste. Am Rande bemerkt, das englische Wort für holen bzw. abholen ist „fetch“. Mit den abgeholten in einer Liste gespeicherten Daten können wir weiterarbeiten – in unserem Fall erst einmal ausgeben um zu sehen, ob die in die Datenbank geschriebenen Daten auch wieder korrekt herauskommen.

inhalt = zeiger.fetchall()

Da wir nur Daten abholen, benötigen wir keine commit()-Anweisung.

Jetzt noch die Ausgabe:

print(inhalt)

Der dazu notwendige komplette Code:

import sqlite3
verbindung = sqlite3.connect("datenbank/geburtstage.db")
zeiger = verbindung.cursor()
zeiger.execute("SELECT * FROM personen")
inhalt = zeiger.fetchall()
print(inhalt)
verbindung.close()

Als Feedback bekommen wir folgende Ausgabe auf dem Bildschirm:

[('Johann Wolfgang von', 'Goethe', '28.8.1749'), ('Johann Wolfgang von', 'Goethe', '28.8.1749'), ('Friedrich', 'Schiller', '10.11.1759')]

Wir haben also eine Liste mit unseren einzelnen Elementen. Unseren Goethe haben wir versehentlich 2-mal in die Datenbank gespeichert. Interessanterweise scheint das Geburtsdatum korrekt übernommen worden zu sein, obwohl wir dies in deutscher Schreibweise gespeichert haben.

Nicht alle Felder auslesen

Möchte ich aus meiner Tabelle nicht alle Felder auslesen, kann ich dies in der SELECT-Anweisung mitgeben. Jetzt gebe ich anstelle des Sterns (sprich nicht mehr alle Felder) meine gewünschten Felder an.

Möchte ich aus meiner Datenbank „personen“ nur noch den Nachnamen und den Geburtstag erhalten, gebe ich die beide Feldnamen an:

SELECT nachname, geburtstag FROM personen"

Und im kompletten Code:

import sqlite3
verbindung = sqlite3.connect("datenbank/geburtstage.db")
zeiger = verbindung.cursor()
zeiger.execute("SELECT nachname, geburtstag FROM personen")
inhalt = zeiger.fetchall()
print(inhalt)
verbindung.close()

Als Ergebnis erhalten wir:

[('Goethe', '28.8.1749'), ('Goethe', '28.8.1749'), ('Schiller', '10.11.1759')]

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung