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