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
Instrucciones del ejercicio
- Importa
selectdel módulosqlalchemy. - 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 tablacensus. Para ello, pasa una lista aselect()que contenga un único elemento:census. - Imprime
stmtpara ver la consulta SQL real que se está creando. Este código ya está escrito para ti. - Extrae 10 registros de la tabla
censusy guárdalos enresults. Para hacerlo:- Usa el método
.execute()sobreconnectionconstmtcomo argumento para obtener el ResultProxy. - Usa
.fetchmany()con el argumentosizeadecuado sobreconnection.execute(stmt)para obtener el ResultSet.
- Usa el método
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)