Filtrar filas BD en python

Jose Luis Dominguez NONLILLY DOMINGUEZ_JOSE_LUIS_NONLILLY en LILLY.COM
Mar Dic 19 09:24:14 CET 2006


Hola Jesus.

Desde mi punto de vista puedes filtrar tanto en la base de datos como en 
python. Todo depende de la velocidad y uso de memoria del que puedas 
disponer.

En la solución de SQL, deberías hacer LIKE sobre todas las columnas a 
buscar.

Usando tu ejemplo

select * from tabla where Nombre LIKE '%Ma%' OR Apellido LIKE '%Ma%' OR 
provincia LIKE '%Ma%' ;

Si tienes muchos datos almacenados, hacer una búsqueda en la base de datos 
puede ser un poco lento. Si es así pasarías la estructura a memoria y 
luego realizarías el filtrado sobre los elementos en memoria.

Un saludo
Jose


python-es-bounces en aditel.org wrote on 18/12/2006 22:32:05:

> Buenas amigos,
> 
> Estoy haciendo un programa que usa bases de datos y claro, hay una cosa 
que
> no sé hacer, y realmente con mi actual conocimiento de SQL no podría 
decir
> si tengo que hacer esto con SQL o código python.
> 
> Me explico:
> 
> Quiero hacer algo como el filtrado de canciones que hace rhythmbox,
> quodlibet, banshee, etc.
> 
> O sea, sale en un treeview la lista de canciones y colocando un caracter 
en
> el entry, ya empieza a mostrar solo las entradas que contengan ese 
caracter
> (o conjunto de caracteres).
> 
> Pongo un ejemplo:
> 
> Si tengo una base de datos con 3 columnas, por ejemplo: Nombre, 
Apellido,
> Provincia. y tengo 3 entradas:
> 
> Francisco, Garcia, Madrid
> Maria, perez, Valencia
> Juan, Garcia, Palencia
> 
> Entonces si no hay nada en el entry, pues saldrian todas las entradas, 
pero
> si coloco por ejemplo: "alencia" pues mostraria los dos ultimos ya que 
esa
> cadena existe dentro de la fila.
> 
> Si pongo "ma" pues saldrían los 2 primeros, ya que "ma" está en Madrid y
> está en Maria.
> 
> Segun creo, para buscar cosas en una BD se puede usar WHERE:
> 
> select * from tabla where Nombre='Ma%';
> 
> Pero claro, la cosa está en que quiero que la cadena que pongo para 
filtrar,
> se busque en cualquier columna de la fila y esa cadena puede estar en
> cualquier sitio de una palabra, así que creo que no podría usar Where
> columna='xxx' ya que no quiero buscar en una columna solo, quiero buscar 
en
> todas, y tampoco podría usar lo de 'Ma%' ya que esto dice que busque al
> principio de una cadena, y quiero que sea en el principio, mitad o final 
de
> la cadena.
> 
> No sé si esto se peude hacer con SQL o esto se hace parseando entradas 
con
> python.
> 
> Y ya luego, supongo que tendría un evento que se lanzaria cada vez que 
se
> modificara el entry y haga el filtrado, aunque tener que abrir la base 
de
> datos, buscar, y cerrar la base de datos cada vez que modifique el 
entry,
> quizás sea algo lento.
> 
> Gracias.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es




Más información sobre la lista de distribución Python-es