LIKE pyPqSQL SOLUCIONADO

Marcos Sánchez Provencio rapto en arrakis.es
Lun Feb 14 16:53:56 CET 2005


A mí esto me va, me va, me vaaa

La tabla es
prueba=# SELECT * from t1;
 c1 |   c2
----+--------
  1 | uno
  2 | dos
  3 | tres
  4 | cuatro
  5 | cinco
(5 filas)

Y ya en Python:

>>> from pyPgSQL import PgSQL
>>> c = PgSQL.connect(database='prueba')
>>> cur = c.cursor()
>>> cur.execute('''
   select * 
   from t1 
   where c2 like %s 
   ''',('%u%',))

>>> cur.fetchall()
[[1, 'uno'], [4, 'cuatro']]

La gracia es que le llegue al servidor el sql y el valor (o valores) por
separado.

El lun, 14-02-2005 a las 06:39 -0800, FERNANDO VILLARROEL escribió:
> Hola Marcos probe lo siguiente:
> 
> cur.execute(q, (c,)) # No est probado, mirar docu
> 
> ...no corrio, pero si de la siguiente forma:
> 
> cur.execute(q % c)
> 
> Fernando
> --- Marcos Snchez Provencio <rapto en arrakis.es> wrote:
> 
> > Si tienes que lanzarla varias veces, ir ms rpida
> > si utilizas
> > parmetros 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 mayora de los gestores de BD, de este modo el
> > sql que llega al
> > servidor es siempre el mismo, con lo que el anlisis
> > del sql y
> > optimizacin de la consulta se guardan de una
> > llamada a la siguiente,
> > sustituyendo tan solo el valor de los parmetros.
> > Adems, tienes la
> > ventaja de que te ahorras fallos de inyeccin 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
> > 
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
> > 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.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