データ分析エンジニアのブログ

日常のことからプログラミングや機械学習まで@六本木

PythonでMySQLのエスケープ


PythonMySQLを使うとき必ずと言っていいほど文字コードに悩まされます。


以前起きたUnicodeErrorはMySQLdb.connector()
メソッドでcharset='utf8'を引数に渡せば解決する類のものでした。


今回のUnicodeErrorはテキストを挿入したときに起きたもので、
シングルクォーテーションを含むテキストでエラーが起きていました。
このようなエラーを素早く発見するためには、
デバッグ用にこまめに発行したSQLなどを表示させると良いです。


さて問題がわかったところでPythonMySQLのエスケープに入ります。
やり方は簡単で、、

MySQLdb.escape_string(string)

これだけでエスケープしてくれます。


ただ注意点として、引数のstringはstr型でないといけないので、
もしunicode等を使っている場合はきちんと型を変換しなければなりません。