LIKE pyPqSQL SOLUCIONADO
FERNANDO VILLARROEL
fvillarroel en yahoo.com
Mar Feb 22 22:48:31 CET 2005
Hola Marco gracias por tus consejos, sobre todo lo
relacionado con lo referido a los SQL y enviar los
parametros de una consulta: ejm. cur.execute(sql,
(parametro1,)) ya estoy trabajando en los que tenia
hecho y arregladolos a esa nomenclatura.
Si esta pregunta era algo ingenua pero la verdad es
que la clausula LIKE me dio varios dolores de cabeza,
pero si la habia solucionado asi c+'%'...de todas
formas gracias y sobre todo tus consejos....chao
amigo.
Fernando
--- Marcos S?nchez Provencio <rapto en arrakis.es> wrote:
> ?sa es demasiado f?cil:
>
> Si la cadena buscada es c, para empalmar % a los dos
> lados se usa:
>
> c = '%' + c + '%'
>
> Si s?lo quieres empalmarlo al final:
>
> c = c + '%'
>
> ?Cu?l era la pregunta?
>
> FERNANDO VILLARROEL dijo:
> > 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
> >
> >
> > _______________________________________________
> > 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!?
The all-new My Yahoo! - Get yours free!
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