Pythonのライブラリdatasetを使ってmysqlにデータを書き込もうとしたときに、UnicodeEncodeErrorが出て書き込みに失敗した。
対処方法がわかったので記事化します!
起きた問題
Pythonのライブラリdatasetを使ってmysqlにデータを書き込み(insert)を試みました。
しかし、insertの処理をしようとしたタイミングで、UnicodeEncodeErrorが出て書き込みに失敗しました。
そのときに書いたコードが以下の通り。
# -*- coding: utf-8 -*-
import dataset
import sys
print(sys.getdefaultencoding())
db = dataset.connect('mysql://user_name:password_dao@127.0.0.1:3306/db_name')
table = db['use_table']
print(table)
keyword = "あしだ"
suggest_keyword = "いいいい"
#データ追加を試みる
table.insert(dict(keyword=keyword , suggest_keyword=suggest_keyword))
その結果、出力されたエラーは以下の通り。
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to
どうやら文字コードのエラーのようだ。
解決策
原因は、ライブラリーdatasetに対して明示的にutf-8であることを伝えてなかったのが問題だった。
よって以下の様に修正したら、UnicodeEncodeErrorエラーがなくなり正しく動作するのでした。
#変更前
#db = dataset.connect('mysql://user_name:password_dao@127.0.0.1:3306/db_name')
#変更後・文字コードがutf-8であることを明示的に記載する
db = dataset.connect('mysql://user_name:password_dao@127.0.0.1:3306/db_name?charset=utf8')
めでたしめでたし。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |