Ermitteln der Bevölkerungssumme pro Bundesstaat
Um Verwechslungen mit Spaltennamen in Ergebnis der Abfrage wie count_1 zu vermeiden, können wir die Methode .label() verwenden, um der resultierenden Spalte einen Namen zu geben. Diese wird an die Funktionsmethode angehängt, die wir verwenden, und ihr Argument ist der gewünschte Name.
Wir können func.sum() mit .group_by() kombinieren, um die Summe der Bevölkerung nach State zu erhalten, und die Methode label() verwenden, um die Ausgabe zu benennen.
Wir können auch den func.sum()-Ausdruck erstellen, bevor wir ihn in der Select-Anweisung verwenden. Wir machen das genauso, wie wir es innerhalb der Select-Anweisung tun würden, und speichern ihn in einer Variablen. Dann verwenden wir diese Variable in der Select-Anweisung dort, wo normalerweise func.sum() stehen würde.
Diese Übung ist Teil des Kurses
Einführung in Datenbanken mit Python
Anleitung zur Übung
- Importiere
funcaussqlalchemy. - Erstelle einen Ausdruck, der die Summe der Werte im Feld
pop2008berechnet und als'population'bezeichnet. - Baue eine Select-Anweisung, die den Wert des Feldes
stateund die Summe der Werte inpop2008abfragt. - Gruppiere die Anweisung per
.group_by()nachstate. - Führe
stmtüber dieconnectionaus, um die Anzahl zu erhalten, und speichere die Ergebnisse alsresults. - Gib die Schlüssel/Spaltennamen der zurückgegebenen Ergebnisse mit
results[0].keys()aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Import func
____
# Build an expression to calculate the sum of pop2008 labeled as population
pop2008_sum = func.sum(____).label(____)
# Build a query to select the state and sum of pop2008: stmt
stmt = select([____, ____])
# Group stmt by state
stmt = stmt.group_by(____)
# Execute the statement and store all the records: results
results = connection.execute(____).fetchall()
# Print results
print(results)
# Print the keys/column names of the results returned
print(____)