LIKE pyPqSQL SOLUCIONADO

Marcos Sánchez Provencio rapto en arrakis.es
Dom Feb 13 13:10:22 CET 2005


Si tienes que lanzarla varias veces, irá más rápida si utilizas
parámetros en la consulta:
c=self.rzd+'%'

q="select a.cclte, a.razonsocial,a.direccion,
a.telefono1, b.descripcion \
from cltescred as a, comunas as b  \
where a.ccomuna=b.ccomuna and a.razonsocial \
like %s"

cur.execute(q, (c,)) # No está probado, mirar docu

En la mayoría de los gestores de BD, de este modo el sql que llega al
servidor es siempre el mismo, con lo que el análisis del sql y
optimización de la consulta se guardan de una llamada a la siguiente,
sustituyendo tan solo el valor de los parámetros. Además, tienes la
ventaja de que te ahorras fallos de inyección de sql y errores de
sinaxis si la cadena original contiene comillas.

El vie, 11-02-2005 a las 18:14 -0800, FERNANDO VILLARROEL escribió:
> Hola lo solucione de la siguiente forma:
> 
> self.rzd (es la cadena a buscar)
> 
> c=self.rzd+'%'
> 
>  q="select a.cclte, a.razonsocial,a.direccion,
> a.telefono1, b.descripcion \
> from cltescred as a, comunas as b  \
> where a.ccomuna=b.ccomuna and a.razonsocial \
> like '%s' " % c
> 
> cur.execute(q)
> 
> y listo la clave esta en la concatenacion de la cadena
> a buscar + "%"
> 
> Lo Posteo por si alguien se tropieza con este problema
> 
> Saludos
> Fernando
> --- FERNANDO VILLARROEL <fvillarroel en yahoo.com> wrote:
> 
> > Te quedara algo ms o menos as:
> > 
> > q="select a.cclte, a.razonsocial,a.direccion,
> > a.telefono1, 
> > b.descripcion \
> >  from cltescred as a, comunas as b  \
> > where a.ccomuna=b.ccomuna and a.razonsocial \
> >  like '%%%s' " % self.rzd
> > 
> > Hola probe con es te script,pero sigo con error,
> > pero
> > ahora a nivel de libpq:
> > 
> > ERROR: syntax error at or near "'%fer'" at character
> > 241
> > 
> > Tambien probe con (self.rzd,) pero me tira el mismo
> > error.
> > 
> > No se lo probe en la base de datos y alla el script
> > funciona de la siguiente manera:
> > 
> > cargas=# select a.razonsocial, b.descripcion  from
> > cltesctdo as a, comunas as b where razonsocial like
> > 'E%' and a.ccomuna=b.ccomuna;
> >  razonsocial | descripcion
> > -------------+-------------
> >  ENTEL       | santiago
> > (1 row)
> > 
> > cargas=#
> > 
> > Esto me muestra todos los clientes cuya razon social
> > cominece con la letra E.
> > 
> > 
> > Fernando
> > 
> > 
> > 		
> > __________________________________ 
> > Do you Yahoo!? 
> > The all-new My Yahoo! - Get yours free! 
> > http://my.yahoo.com 
> >  
> > 
> > > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
> > 
> 
> 
> 
> 		
> __________________________________ 
> Do you Yahoo!? 
> Meet the all-new My Yahoo! - Try it today! 
> http://my.yahoo.com 
> 
> 
> _______________________________________________
> 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