ComenzarEmpieza gratis

Seleccionar datos de una tabla con SQLAlchemy

¡Excelente trabajo hasta ahora! Ha llegado el momento de crear tu primera sentencia select con SQLAlchemy. SQLAlchemy ofrece una forma "pythónica" de interactuar con bases de datos. En el ejercicio anterior, al usar SQL sin procesar, consultaste la base de datos directamente. Con SQLAlchemy, en cambio, pasarás por un objeto Table, y SQLAlchemy se encargará de traducir tu consulta a una sentencia SQL adecuada por ti. Así, en lugar de lidiar con las diferencias entre dialectos específicos de SQL tradicional como MySQL o PostgreSQL, puedes aprovechar el marco pythonico de SQLAlchemy para agilizar tu flujo de trabajo y consultar tus datos de forma más eficiente. Por este motivo, merece la pena aprenderlo incluso si ya dominas el SQL tradicional.

En este ejercicio, volverás a construir una sentencia para consultar todos los registros de la tabla census. Esta vez, sin embargo, usarás la función select() del módulo sqlalchemy. Esta función requiere como único argumento obligatorio una lista de tablas o columnas: por ejemplo, select([my_table]).

También recuperarás solo unos pocos registros del ResultProxy usando .fetchmany() con un argumento size que indique cuántos registros obtener.

Table y MetaData ya se han importado. Los metadatos están disponibles como metadata y la conexión a la base de datos como connection.

Este ejercicio forma parte del curso

Introducción a las bases de datos en Python

Ver curso

Instrucciones del ejercicio

  • Importa select del módulo sqlalchemy.
  • Refleja la tabla census. Este código ya está escrito para ti.
  • Crea una consulta usando la función select() para recuperar todos los registros de la tabla census. Para ello, pasa una lista a select() que contenga un único elemento: census.
  • Imprime stmt para ver la consulta SQL real que se está creando. Este código ya está escrito para ti.
  • Extrae 10 registros de la tabla census y guárdalos en results. Para hacerlo:
    • Usa el método .execute() sobre connection con stmt como argumento para obtener el ResultProxy.
    • Usa .fetchmany() con el argumento size adecuado sobre connection.execute(stmt) para obtener el ResultSet.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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)
Editar y ejecutar código