Hämta data från en tabell: raw SQL
Som du såg i videon behöver vi först upprätta en anslutning till databasen med hjälp av metoden .connect() på motorn. Det beror på att funktionen create_engine() som du använt tidigare returnerar en instans av en motor, men öppnar ingen anslutning förrän en åtgärd som kräver det utförs – till exempel en fråga.
Med hjälp av det vi nyss lärt oss om SQL och metoden .execute() på vår anslutning kan vi använda en raw SQL-fråga för att hämta alla poster i tabellen census. Objektet som returneras av .execute() är en ResultProxy. På den kan vi sedan använda metoden .fetchall() för att hämta våra resultat – det vill säga ResultSet.
I den här övningen använder du en traditionell SQL-fråga. Observera att när du kör en fråga med raw SQL ställs den direkt mot tabellen i databasen. Inget reflektionssteg behövs alltså.
I nästa övning går vi över till SQLAlchemy och börjar utforska dess fördelar. Kör på!
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Använd metoden
.connect()påengineför att skapa en anslutning. - Bygg en SQL-sats som hämtar alla kolumner från
censusoch lagra den istmt. Observera att SQL-satsen måste vara en sträng. - Använd metoderna
.execute()och.fetchall()påconnectionoch lagra resultatet iresults. Kom ihåg att.execute()anropas före.fetchall()och attstmtska skickas in till.execute(). - Skriv ut
results.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///census.sqlite')
# Create a connection on engine
connection = ___
# Build select statement for census table: stmt
stmt = ____
# Execute the statement and fetch the results: results
results = ____
# Print results
print(____)