LIKE pyPqSQL SOLUCIONADO

FERNANDO VILLARROEL fvillarroel en yahoo.com
Mar Feb 22 14:04:35 CET 2005


Chema el problema es que como tu me sugeries me da
problemas a nivel de libpq:

o, incluso mejor, utiliza par?metros en el query:

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, (self.rzd,) )

Aca va el error

Traceback (most recent call last):
  File "like.py", line 10, in ?
    cur.execute(q,(c,))
  File
"/usr/lib/python2.3/site-packages/pyPgSQL/PgSQL.py",
line 3072, in execute
    raise OperationalError, msg
libpq.OperationalError: ERROR:  syntax error at or
near "vilna" at character 157
Aca el script de prueba:

c="vilna"
q="select a.razonsocial,b.descripcion from cltescred
as a, comunas as b \
where a.ccomuna=b.ccomuna and a.razonsocial like '%s'
"
cur.execute(q,(c,))

A que se debera?
--- Chema Cortes <lslorg en ls-l.org> wrote:

> Quoting FERNANDO VILLARROEL <fvillarroel en yahoo.com>:
> 
> > 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 + "%"
> 
> Aunque funcione, no es demasiado correcto hacerlo
> as?. El problema que
> ten?as es
> porque en el patr?n que usas en el LIKE acaba con el
> s?mbolo '%'. Al
> a?adir otro
> s?mbolo, est?s "escapando" el % para que no sea
> interpretado como parte de la
> cadena de formato.
> 
> Pero en el LIKE tambi?n podr?a tener el % al inicio,
> caso que no consideras.
> 
> La mejor soluci?n es "escapar" todos los %:
> 
> c=self.rzd.replace("%","%%")
> 
> o, incluso mejor, utiliza par?metros en el query:
> 
> 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, (self.rzd,) )
> 
> 
> 
> 



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Mail - Find what you need with new enhanced search.
http://info.mail.yahoo.com/mail_250
------------ próxima parte ------------
_______________________________________________
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