2011-07-19 47 views
2

我處理的一個MySQL/SQLAlchemy的執行語句,看起來像這樣():逃避執行使用字符的SQLAlchemy

stmt = 'SELECT * from myTable where id=:idVar AND pct LIKE :pctVar' 
args = {idVar:5, pctVar:'5%\\%'} 
result = session.execute(stmt, args).fetchall() 

如何逃脫「%」?上述不符合「55%」

回答

2

嘗試下面的查詢使用顯式ESCAPE規格:

stmt = "SELECT * from myTable where id=:idVar AND pct LIKE :pctVar ESCAPE '\\'" 

如果它工作,然後檢查NO_BACKSLASH_ESCAPES選項。

+0

感謝您的建議。它適用於所提供的示例,但由於我的實際問題稍微複雜一些,所以我需要考慮一下。你不會知道如何通過sqlAlchemy爲單個會話設置NO_BACKSLASH_ESCAPES選項嗎? – Paul

+0

我不知道,但是[http://www.sqlalchemy.org/docs/dialects/mysql.html#sql-mode]可能會有幫助。 – van