Gegevens selecteren uit een tabel: ruwe SQL
Zoals je in de video hebt gezien, moeten we eerst een verbinding maken met de database via de methode .connect() op de engine om toegang te krijgen tot en te werken met de gegevens. Dat komt omdat de functie create_engine() die je eerder gebruikte wel een engine-instantie teruggeeft, maar pas echt een verbinding opent zodra er een actie wordt aangeroepen die een verbinding vereist, zoals een query.
Met wat we net over SQL hebben geleerd en door de methode .execute() op onze verbinding toe te passen, kunnen we een ruwe SQL-query gebruiken om alle records in onze census-tabel op te vragen. Het object dat door de methode .execute() wordt teruggegeven, is een ResultProxy. Op deze ResultProxy kunnen we vervolgens de methode .fetchall() gebruiken om onze resultaten op te halen — dat wil zeggen de ResultSet.
In deze oefening gebruik je een traditionele SQL-query. Merk op dat wanneer je een query uitvoert met ruwe SQL, je de tabel rechtstreeks in de database bevragt. Er is dus geen reflectiestap nodig.
In de volgende oefening stap je over naar SQLAlchemy en ga je de voordelen ervan ontdekken. Succes!
Deze oefening maakt deel uit van de cursus
Introductie tot databases in Python
Oefeninstructies
- Gebruik de methode
.connect()vanengineom een verbinding te maken. - Bouw een SQL-statement om alle kolommen uit
censusop te vragen en sla dit op instmt. Let op: je SQL-statement moet een string zijn. - Gebruik de methoden
.execute()en.fetchall()opconnectionen sla het resultaat op inresults. Denk eraan dat.execute()vóór.fetchall()komt en datstmtmoet worden meegegeven aan.execute(). - Print
results.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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(____)