IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Importa select dal modulo sqlalchemy.
  • Rifletti la tabella census. Questo codice è già scritto per te.
  • Crea una query usando la funzione select() per recuperare tutti i record nella tabella census. Per farlo, passa a select() una lista contenente un solo elemento: census.
  • Stampa stmt per vedere la query SQL effettivamente creata. Questo codice è già stato scritto per te.
  • Recupera 10 record dalla tabella census e salvali in results. Per farlo:
    • Usa il metodo .execute() su connection con stmt come argomento per ottenere il ResultProxy.
    • Usa .fetchmany() con l’argomento size appropriato su connection.execute(stmt) per ottenere il ResultSet.

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)
Modifica ed esegui il codice