Joins
Även om du inte väljer kolumner från båda tabellerna, eller om de två tabellerna saknar ett definierat samband, kan du ändå använda metoden .join() på en tabell för att jointa den med en annan tabell och få
extra data kopplat till din fråga. join() tar tabellobjektet du vill jointa som första argument, och ett villkor som
beskriver hur tabellerna är relaterade som andra argument. Slutligen
använder du metoden .select_from() på select-satsen för att omsluta join-
klausulen. I videon körde Jason till exempel följande kod för att jointa tabellen census med tabellen state_fact, så att kolumnen state i census motsvarade kolumnen name i state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Bygg en sats för att välja ALLA kolumner från tabellerna
censusochstate_fact. För att välja ALLA kolumner från två tabeller, till exempelemployeesochsales, skriver dustmt = select([employees, sales]). - Lägg till en
select_fromtillstmtför att jointa tabellencensusmed tabellenstate_factvia kolumnenstateicensusoch kolumnennameistate_fact. - Exekvera satsen för att hämta det första resultatet och spara det som
result. Den koden är redan skriven. - Skicka in svaret för att loopa igenom nycklarna i resultatobjektet och skriv ut nyckeln och värdet för var och en!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Build a statement to select the census and state_fact tables: stmt
stmt = select([____, ____])
# Add a select_from clause that wraps a join for the census and state_fact
# tables where the census state column and state_fact name column match
stmt_join = stmt.select_from(
____(____, census.columns.____ == state_fact.columns.____))
# Execute the statement and get the first result: result
result = connection.execute(stmt_join).first()
# Loop over the keys in the result object and print the key and value
for key in result.keys():
print(key, getattr(result, key))