Selezionare dati da una tabella con SQLAlchemy
Ottimo lavoro fin qui! È il momento di creare la tua prima istruzione di selezione usando SQLAlchemy. SQLAlchemy offre un comodo approccio “pitonico” per interagire con i database. Nell’esercizio precedente, usando SQL puro, hai interrogato direttamente il database. Con SQLAlchemy, invece, passerai attraverso un oggetto Table, e sarà SQLAlchemy a occuparsi di tradurre la tua query nell’istruzione SQL appropriata. Così, invece di gestire le differenze tra i vari dialetti SQL come MySQL o PostgreSQL, puoi sfruttare il framework Pythonico di SQLAlchemy per semplificare il flusso di lavoro e interrogare i dati in modo più efficiente. Per questo vale la pena impararlo anche se conosci già lo SQL tradizionale.
In questo esercizio creerai di nuovo un’istruzione per interrogare tutti i record della tabella census. Questa volta, però, userai la funzione select() del modulo sqlalchemy. Questa funzione richiede come unico argomento obbligatorio una lista di tabelle o colonne: per esempio, select([my_table]).
Recupererai inoltre solo alcuni record del ResultProxy usando .fetchmany() con un argomento size che specifica quanti record recuperare.
Table e MetaData sono già stati importati. I metadati sono disponibili come metadata e la connessione al database come connection.
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Importa
selectdal modulosqlalchemy. - Rifletti la tabella
census. Questo codice è già scritto per te. - Crea una query usando la funzione
select()per recuperare tutti i record nella tabellacensus. Per farlo, passa aselect()una lista contenente un solo elemento:census. - Stampa
stmtper vedere la query SQL effettivamente creata. Questo codice è già stato scritto per te. - Recupera 10 record dalla tabella
censuse salvali inresults. Per farlo:- Usa il metodo
.execute()suconnectionconstmtcome argomento per ottenere il ResultProxy. - Usa
.fetchmany()con l’argomentosizeappropriato suconnection.execute(stmt)per ottenere il ResultSet.
- Usa il metodo
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)