Hämta data från en tabell med SQLAlchemy
Bra jobbat hittills! Nu är det dags att skapa din första SELECT-sats med SQLAlchemy. SQLAlchemy erbjuder ett smidigt och pythonvänligt sätt att arbeta med databaser. I den förra övningen använde du råa SQL-frågor direkt mot databasen. Med SQLAlchemy arbetar du i stället via ett Table-objekt, och SQLAlchemy översätter din fråga till en lämplig SQL-sats åt dig. I stället för att hantera skillnaderna mellan olika SQL-dialekter som MySQL eller PostgreSQL kan du alltså utnyttja SQLAlchemys pythonbaserade ramverk för att effektivisera ditt arbetsflöde. Det är värt att lära sig även om du redan är bekant med traditionell SQL.
I den här övningen bygger du återigen en fråga som hämtar alla poster från tabellen census. Den här gången använder du select()-funktionen från modulen sqlalchemy. Funktionen kräver en lista med tabeller eller kolumner som enda obligatoriskt argument – till exempel select([my_table]).
Du kommer också att hämta bara ett fåtal poster från ResultProxy med hjälp av .fetchmany() och ett size-argument som anger hur många poster som ska hämtas.
Table och MetaData har redan importerats. Metadata är tillgänglig som metadata och anslutningen till databasen som connection.
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Importera
selectfrån modulensqlalchemy. - Reflektera tabellen
census. Den här koden är redan skriven åt dig. - Skapa en fråga med
select()-funktionen för att hämta alla poster i tabellencensus. Skicka en lista tillselect()med ett enda element:census. - Skriv ut
stmtför att se den faktiska SQL-fråga som skapas. Den här koden är redan skriven åt dig. - Hämta 10 poster från tabellen
censusoch lagra dem iresults. Gör så här:- Använd metoden
.execute()påconnectionmedstmtsom argument för att hämta ResultProxy. - Använd
.fetchmany()med rättsize-argument påconnection.execute(stmt)för att hämta ResultSet.
- Använd metoden
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)