Seleccionar datos de una tabla: SQL en bruto
Como has visto en el vídeo, para acceder y manipular los datos de la base de datos primero necesitamos establecer una conexión usando el método .connect() sobre el engine. Esto se debe a que la función create_engine() que has usado antes devuelve una instancia de un engine, pero en realidad no abre una conexión hasta que se realiza una acción que la requiera, como una consulta.
Usando lo que acabamos de ver sobre SQL y aplicando el método .execute() sobre nuestra conexión, podemos aprovechar una consulta de SQL en bruto para recuperar todos los registros de la tabla census. El objeto que devuelve el método .execute() es un ResultProxy. Sobre este ResultProxy, podemos usar el método .fetchall() para obtener los resultados, es decir, el ResultSet.
En este ejercicio, usarás una consulta SQL tradicional. Fíjate en que, cuando ejecutas una consulta con SQL en bruto, consultas la tabla directamente en la base de datos. En particular, no hace falta un paso de reflexión.
En el siguiente ejercicio pasarás a SQLAlchemy y empezarás a entender sus ventajas. ¡Adelante!
Este ejercicio forma parte del curso
Introducción a las bases de datos en Python
Instrucciones del ejercicio
- Usa el método
.connect()deenginepara crear una conexión. - Construye una sentencia SQL para consultar todas las columnas de
censusy guárdala enstmt. Ten en cuenta que tu sentencia SQL debe ser una cadena (string). - Usa los métodos
.execute()y.fetchall()sobreconnectiony guarda el resultado enresults. Recuerda que.execute()va antes que.fetchall()y questmtdebe pasarse a.execute(). - Imprime
results.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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(____)