2012-06-07 3 views
17

La mia domanda è:Come sfuggire% in una query usando python's sqlalchemy's execute() e pymysql?

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

dà l'errore:

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

Un google rapido ha detto di utilizzare %% anziché%, ma che non funziona neanche. Come faccio a uscire dal% o c'è un altro modo per interrogare una stringa che inizia con una lettera casuale e poi una certa sequenza?

risposta

26

Dal momento che si tratta di una stringa letterale, è meglio utilizzare un parametro legato qui (illustrato con text()):

from sqlalchemy import text 

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

fuga con un backslash \

Io lo uso quando mi esibisco LIKE query:

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

Per le ricerche in cui è query100%, query_wildcard quindi contiene %100\%% quindi effettivamente cerca 100%

Forse è qualcosa da implementare nel codice?

+1

No, questo non funziona – Ahmed