Buenas, vuelco aquí esta consulta porque no sé dónde ubicarla.
Esta es una típica sentencia de búsqueda escrita en python:
Funciona de maravillas.
Pero estoy intentando que el usuario pueda elegir el contenido de data (o sea que pueda elegir sobre qué campos se realizará la consulta).
He intentado de muchas maneras, sin lograrlo. La última es la siguiente:
Pero me dí cuenta (haciendo un print a la línea "dato = cursor.fetchall()" (o sea, haciendo un print(dato)) que la consulta no devuelve nada, con lo cual infiero que la línea " cursor.execute(sql, data) " no le está pasando a la sentencia sql los datos.
Quizás no es la manera de hacerlo, esto fué sólo un intento de mi parte.
¿Cómo podría hacerse?
Esta es una típica sentencia de búsqueda escrita en python:
Código:
cursor = base.cursor()
data = (estado, )
sql = "SELECT id, título, autor, editorial, isbn, pvp FROM ejemplares WHERE estado = ? ORDER BY id"
cursor.execute(sql, data)
for fila in cursor:
tree.insert("", "end", text=fila[0], values=(fila[1], fila[2], fila[3], fila[4], fila[5]))
Funciona de maravillas.
Pero estoy intentando que el usuario pueda elegir el contenido de data (o sea que pueda elegir sobre qué campos se realizará la consulta).
He intentado de muchas maneras, sin lograrlo. La última es la siguiente:
Código:
cursor = base.cursor()
datos=["","","","",""]
if prod:
datos[0] =prod
if estado:
datos[1] = estado
if tipo:
datos[2] = tipo
if gen:
datos[3] = gen
if sub_gen:
datos[4] = sub_gen
print("print de datos:", datos)
print("tipo de datos",type(datos))
data = tuple(datos)
print("print de data:",data)
print("tipo de data",type(datos))
sql = "SELECT id, título, autor, editorial, isbn, pvp FROM ejemplares WHERE producto = ? AND estado = ? AND categoría = ? AND género = ? AND subgénero = ? ORDER BY id"
cursor.execute(sql, data)
dato = cursor.fetchall()
Pero me dí cuenta (haciendo un print a la línea "dato = cursor.fetchall()" (o sea, haciendo un print(dato)) que la consulta no devuelve nada, con lo cual infiero que la línea " cursor.execute(sql, data) " no le está pasando a la sentencia sql los datos.
Quizás no es la manera de hacerlo, esto fué sólo un intento de mi parte.
¿Cómo podría hacerse?