LIKE pyPqSQL SOLUCIONADO

FERNANDO VILLARROEL fvillarroel en yahoo.com
Mar Feb 22 14:55:40 CET 2005


Funciona pero me devielve una lista vacia, pese a que
por la cadena que busco existe en la base de datos,
creo que se debe a que la clausula like debe ir
acompanada de %, me explico deberia ser

where like 'fernando%'

Asi funciona en Postgres, como le adjunto el signo %
al final de la cadena a buscar entonces.
--- Marcos S?nchez Provencio <rapto en arrakis.es> wrote:

> Parece que te sobran las comillas:
> like '%s' "
> es
> like %s "
> 
> FERNANDO VILLARROEL dijo:
> > 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
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
> >
> 
> _______________________________________________
> 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 
 

------------ 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