2012-06-07 11 views
17

私のクエリは次のとおりです。pythonのsqlalchemyのexecute()とpymysqlを使ってクエリで%をエスケープする方法は?

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

がエラーを与える:

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

簡単にGoogleが代わり%の%%を使用すると述べたが、それはどちらか動作しません。どのように%をエスケープするか、またはランダムな文字で始まり、次に特定のシーケンスで始まる文字列を照会する別の方法はありますか?

答えて

26

これは文字列リテラルがあるので、あなたは(text()を使用して説明)ここにバインドされたパラメータを使用して方がいいでしょう:バックスラッシュ\

私が実行したとき、私はそれを使用して

from sqlalchemy import text 

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

エスケープそれをLIKEクエリ:query100%ある検索のために

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

query_wildcardは、多分それはあなたのコードで実装するための何かがありますので、それは実際に100%

を検索%100\%%含まれていますか?

+1

いいえ、これは動作しません – Ahmed

関連する問題