i

Übungen

Aufgabe 1

Schreibe ein Programm, das die 20 größten Orte in Rheinland-Pfalz ausgibt.
Durchlaufe die Datensätze und zähle mit, bis der 20. Datensatz erreicht ist.

KlickenBestimmt brauchst du keine Hilfe für den SQL-Befehl, wenn doch - Klicke auf den Pfeil!

Aufgabe 2

Die folgenden beiden Programmfragmente geben beide die Liste aller Millionenstädte in Europa aus. Dennoch ist in der Ausführung ein deutlicher Unterschied festzustellen. Du kannst das Programm mit beiden Varianten herunterladen: für MySQL und SQLite

Erkläre, warum das so ist!
Welche Schlussfolgerung ziehst du daraus?

Variante 1:

SQLBefehl = '''
   SELECT ort.Name, ort.Einwohner, kontinent.Name AS Kontinentname 
     FROM ort, land, kontinent 
    WHERE ort.LNR  = land.LNR 
      AND land.KNR = kontinent.KNR
'''				

cursor.execute(SQLBefehl)

row = cursor.fetchone()
while row != None:
  if row[1]>1000000 and row[2]=='Europa':
     print("%s (%d)" % (row[0],row[1]) )
  row = cursor.fetchone()

Variante 2:

SQLBefehl = '''
   SELECT ort.Name, ort.Einwohner 
     FROM ort, land, kontinent
    WHERE ort.LNR  = land.LNR 
      AND land.KNR = kontinent.KNR 
      AND ort.Einwohner > 1000000 
      AND kontinent.Name = 'Europa'
'''

cursor.execute(SQLBefehl)
row = cursor.fetchone()
while row != None:
  print("%s (%d)" % (row[0],row[1]) )
  row = cursor.fetchone()

Aufgabe 3

Bist du gut in Erdkunde?

Schreibe ein Programm, das alle Hauptstädte Europas nacheinander ausgibt und den Benutzer nach dem zugehörigen Land fragt.
Zähle die "Treffer" und "Nieten"!

KlickenHier wieder der SQL-Befehl als Hilfe.

Aufgabe 4

Erstelle ein Programm, das für ein zufälliges (!) europäisches Land abfragt, was die Hauptstadt ist und dann auch das Ergebnis in der Datenbank überprüft.

Hilfe: Wenn du alle Datensätze mit rows=fetchall() gelesen hast, dann kannst du z.B. mit len(rows) die Anzahl der Ergebnis-Datensätze abfragen.

Aufgabe 5

Schreibe ein Programm, bei dem man einen beliebigen SQL-Befehl eingeben kann und das dann die Ergebnisse ausgibt. Dabei sollen Fehler beim Verbinden und Fehler bei der Ausführung (z.B. durch falsche SQL-Befehle) abgefangen und dem Benutzer ausgegeben werden.

Erweiterungen:

  1. Schaffst du es die Funktionalität für den Datenbankzugriff in eine eigene Klasse zu "kapseln"?
  2. Entwickle ein Konsolenprogramm und ein GUI-Programm unter Verwendung der Zugriffsklasse.

Suche

v
3.4.3.5
dev.inf-schule.de/datenbanksysteme/zugriff/pythonzugriff/uebungen
dev.inf-schule.de/3.4.3.5
dev.inf-schule.de/@/page/IaMWH7yY2wOG1p1G

Rückmeldung geben