2011-07-19 89 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仕様で次のクエリを試してみてください。それが動作する場合NO_BACKSLASH_ESCAPESオプションをチェックし、その後、

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

+0

お礼ありがとうございます。提供された例で動作しますが、私の本当の問題はもう少し複雑なので、少し考えなければなりません。あなたはsqlAlchemy経由で単一のセッションのNO_BACKSLASH_ESCAPESオプションを設定する方法を知らないでしょうか? – Paul

+0

わかりませんが、[http://www.sqlalchemy.org/docs/dialects/mysql.html#sql-mode]が参考になるかもしれません。 – van

関連する問題