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