【ハマり解決】Pythonのmysql接続ライブラリdatasetを使ったらUnicodeEncodeErrorが発生した

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')

めでたしめでたし。

\転職サポートがある転職サービス4選!!(うち2件はIT未経験OK)/

サービス名
未経験 未経験OK 未経験OK 経験者向け 経験者向け
公開の求人数 ITエンジニア全体で35695件
ITエンジニア未経験で4000件
ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
5,000件以上 2500件以上
利用対象 全職種 全職種 IT特化 ゲーム特化
特徴 ✓転職エージェントが伴走
✓求人数が多い
✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
✓ゲーム転職に強い
✓有名ゲーム会社との取引が多い
転職サポート内容
  • 提出書類の添削
  • 面接対策
  • カウンセリング
  • 求人検索
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
  • 求人検索
  • キャリアプラン提案
  • 提出書類の添削
  • 面接対策
公式サイト リクルートエージェント リクナビネクスト レバテックキャリア シリコンスタジオ

 

 

AI(機械学習)が学べるプログラミングスクール5つを比較!
AIを学び、転職を考えている人にオススメの記事になっています。

【厳選比較】AIプログラミングスクール5選

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG