Selezionare dati da una tabella: SQL grezzo
Come hai visto nel video, per accedere e manipolare i dati nel database dobbiamo prima stabilire una connessione usando il metodo .connect() sull'engine. Questo perché la funzione create_engine() che hai usato prima restituisce un'istanza di engine, ma non apre davvero una connessione finché non viene eseguita un'azione che la richiede, come una query.
Usando quanto appena imparato su SQL e applicando il metodo .execute() sulla connessione, possiamo sfruttare una query SQL “grezza” per interrogare tutti i record della tabella census. L'oggetto restituito da .execute() è un ResultProxy. Su questo ResultProxy possiamo poi usare il metodo .fetchall() per ottenere i risultati, cioè il ResultSet.
In questo esercizio userai una query SQL tradizionale. Nota che quando esegui una query usando SQL grezzo, interroghi la tabella direttamente nel database. In particolare, non è necessario alcun passaggio di reflection.
Nel prossimo esercizio passerai a SQLAlchemy e inizierai a capire i suoi vantaggi. Avanti!
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Usa il metodo
.connect()diengineper creare una connessione. - Costruisci un'istruzione SQL per interrogare tutte le colonne di
censuse salvala instmt. Nota che la tua istruzione SQL deve essere una stringa. - Usa i metodi
.execute()e.fetchall()suconnectione salva il risultato inresults. Ricorda che.execute()viene prima di.fetchall()e chestmtdeve essere passato a.execute(). - Stampa
results.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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(____)