problema con cadena %s y consulta
inf200468 en ucf.edu.cu
inf200468 en ucf.edu.cu
Lun Mayo 4 16:57:57 CEST 2009
el problema es más complicado , pq a la consulta le tengo que pasar parametros
y lo hago con %s, como decirle que en ese lugar si va un string y que ignore el otro %s,
el otro problema, es la forma en la que armo la query
en lka funcion ,
primero obtengo todos los patrones y voy armando la consulta mas abajo , ejemplo
si tengo en los patrones www y google, la consulta seria select * from apache where url
like '%www%' or url like '%google%'
def ObtenerPatrones(self):
"""Esta funcion tomo los
patrones definidos en la bd y devuelve la consulta
buscando el
patron """
conex=Conexion.conectar(self)
quer = 'select patron from patron'
result
=Conexion.ConsultaSelect(self,conex,quer)
lista=list(result)
if(len(lista)>0): #significa que hay
patrones definidos
lista2=[]
cont=0
for r in lista:
r = str(r)
aux= r.split('(')
aux = aux[1].split(',')
aux = aux[0].split('\'')
if(cont==0):
lista2.append('\'%'+aux[1]+'%\'')
else:
lista2.append(' or url like \'%'+aux[1]+'%\'')
cont=cont+1
cadena =
"select * from apache_access where url like "
for r in lista2:
cadena = cadena + r
#cadena = cadena +
')'
return
cadena
else: # no hay patrones
definidos
return
''
> Si usas comillas dobles para delimitar la
cadena, puedes usar las
> comilllas simples en el interior sin necesitar hacer
\' , o sea:
>
> r"select [...] like '%google%'"
>
> (De hecho,
>
> El lun, 04-05-2009 a las 09:55 -0400,
inf200468 en ucf.edu.cu escribió:
>>
>> ok, voy a probar
>> gracias
>> puedo poner r'select * from apache whereurl
>> like \'%google%\' ' ????
>>
>>
>>
>>
>> > Puedes probar
>> escribiendo la cadena como
>> >
>> > r'%google%'
>> >
>>
> La r
>> hace que la cadena se tome como raw, y que todos los caracteres
se
>> >
>> interpreten como lo que son y no por sus
significados especiales.
>> >
>> >
>> Saludos,
>> > Miguel.
>> >
>> > El lun, 04-05-2009 a
las 09:29 -0400,
>> inf200468 en ucf.edu.cu escribi:
>> >>
>> >> Hola , tengo que
>> hacer una consulta a una bd
postgre, yo uso psycopg2 , pero la cadena
>> >> de
>> la
consulta usa like, de la siguiente manera:
>> >> select * from apache
where
>> url
>> >> like '%google%'
>> >>
pero da un error y debe ser por los %,
>> como saben se usan para
>> >> concatenarle un string en una posicion
>> determinada,
>> >> si alguien puede decirme
>> >> una solucion
>> >> gracias
>> >> saludos
>> >>
>> >>
>> >>
>>
_______________________________________________
>> Lista de correo Python-es
>> http://listas.aditel.org/listinfo/python-es
>> FAQ:
http://listas.aditel.org/faqpyes
>
>
_______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ:
http://listas.aditel.org/faqpyes
--
Participe en Universidad 2010,
del 8 al 12 de febrero del 2010
La Habana, Cuba
http://www.universidad2010.cu
http://www.universidad2010.com
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es