2012-06-07 3 views
17

Mi consulta es:¿Cómo escapar% en una consulta utilizando python's sqlalchemy's execute() y pymysql?

result = connection.execute(
     "select id_number from Table where string like '_stringStart%' limit 1;") 

da el error:

query = query % escaped_args 
TypeError: not enough arguments for format string 

Una rápida de Google dice que el uso %% en lugar de% pero eso no funciona bien. ¿Cómo puedo escapar del% o hay otra forma de consultar una cadena que comienza con una letra aleatoria y luego con una secuencia determinada?

Respuesta

26

Dado que esta es una cadena literal, que es mejor usar un parámetro ligado aquí (ilustrado mediante text()):

from sqlalchemy import text 

connection.execute(
    text("select * from table where " 
     "string like :string limit 1"), 
    string="_stringStart%") 
0

escape con una barra invertida \

lo uso cuando realizo LIKE consultas:

query_wildcard = "%{0}%".format(query.replace("%", "\%")) 

las búsquedas en las query es 100%, query_wildcard contiene %100\%% entonces realmente busca 100%

Tal vez sea algo para implementar en su código?

+1

No, esto no funciona – Ahmed

Cuestiones relacionadas