[Python-es] Para que se usa el "%"
Gustavo Cabral
gmcabral en gmail.com
Mar Nov 23 19:17:48 CET 2010
El día 23 de noviembre de 2010 14:20, Luis Miguel Morillas
<morillas en gmail.com> escribió:
> El día 23 de noviembre de 2010 15:34, Gustavo Cabral
> <gmcabral en gmail.com> escribió:
>> Hola:
>> Soy nuevo en esto y leí algunos artículos para comenzar con Python,
>> pero necesito con urgencia entender que significa el % en el código,
>> para ser más claro, tengo este pedazo de código, el cual retorna unos
>> valores de una BD, pero no logro entender para que se usa el "%":
>>
>> for i in ids:
>> #get the id of the current function of the employee of identifier "i"
>> sql_req= """
>> SELECT f.id AS func_id
>> FROM hr_contract c
>> LEFT JOIN res_partner_function f ON (f.id = c.function)
>> WHERE
>> (c.employee_id = %d)
>> """ % (i,)
>>
>> Me podrían ayudar con esto? no entiendo el uso del "%"
>> Muchas Gracias.
>>
>
>
> El ejemplo está incompleto, pero me parece un poco raro. Como te
> comentan el "%" es un operador de sustitución de cadenas pero NO se
> debe de utilizar en las cadenas que se mandan a execute de un cursor
> si estás trabajando con bases de datos. Aquí tienes una explicación
> http://wiki.python.org/moin/DbApiFaq#HowdoIpassparameterstothecursor.executemethod.3F
> Si trabajas con bases de datos, tienes que usar el paramstyle del
> conector que estás usando. Y si vas a realizar múltiples consultas,
> mejor usar executemany que una serie encadenadas de execute, como
> parece que va a lanzar el ejemplo.
Muchas Gracias, el código completo sería así:
1. for i in ids:
2. #get the id of the current function of the employee of identifier "i"
3. sql_req= """
4. SELECT f.id AS func_id
5. FROM hr_contract c
6. LEFT JOIN res_partner_function f ON (f.id = c.function)
7. WHERE
8. (c.employee_id = %d)
9. """ % (i,)
10. cr.execute(sql_req)
11. sql_res = cr.dictfetchone()
Y según lo que me decís, la línea 9 del código tendría que ser:
9. """ , (i,)
¿Es cierto esto?
--
Linux es Libertad
Más información sobre la lista de distribución Python-es