2012-06-07 6 views
17

Meine Frage ist:Wie% in einer Abfrage mit pythons sqlalchemy's execute() und pymysql?

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

gibt den Fehler:

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

Eine schnelle Google statt% sagten verwenden %% aber das funktioniert auch nicht. Wie entkomme ich dem% oder gibt es eine andere Möglichkeit, nach einem String zu suchen, der mit einem zufälligen Buchstaben und dann einer bestimmten Sequenz beginnt?

Antwort

26

Da dies eine Zeichenkette ist, bist du besser dran hier einen gebundenen Parameter verwendet (Illustriert mit text()):

from sqlalchemy import text 

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

Flucht mit einem umgekehrten Schrägstrich \

Ich benutze es, wenn ich auftrete LIKE Anfragen:

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

Für sucht, wo query100% ist, query_wildcard enthält dann %100\%%, also sucht es tatsächlich nach 100%

Vielleicht ist es etwas in Ihrem Code zu implementieren?

+1

Nein, das funktioniert nicht – Ahmed