Crear consultas a partir de parámetros
Ahora vas a implementar una función más potente para consultar la base de datos de hoteles. El objetivo es que esa función reciba argumentos que luego puedan especificarse desde otras partes de tu código.
Más en concreto, tu tarea es definir una función find_hotels() que reciba un único argumento —un diccionario con nombres de columnas y valores— y devuelva una lista de hoteles coincidentes de la base de datos.
Este ejercicio forma parte del curso
Creación de chatbots en Python
Instrucciones del ejercicio
- Ya tienes creada una lista
filters. Únela con las cadenas" WHERE "y" and ". - Crea una tupla con los valores del diccionario
params. - Crea una conexión y un cursor a
"hotels.db"y luego ejecuta laquery, igual que en el ejercicio anterior. - Devuelve los resultados de la consulta.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Define find_hotels()
def find_hotels(params):
# Create the base query
query = 'SELECT * FROM hotels'
# Add filter clauses for each of the parameters
if len(params) > 0:
filters = ["{}=?".format(k) for k in params]
query += " ____ " + " ____ ".join(____)
# Create the tuple of values
t = tuple(____)
# Open connection to DB
conn = sqlite3.connect("____")
# Create a cursor
c = ____
# Execute the query
____
# Return the results
____