【Python】MysqlにデータをINSERTすると日本語が文字化けする原因と対策

この記事は約3分で読めます。

 

 

事前準備

 

<開発環境>

  • Windows10
  • anaconda
  • Python3.7

 

Mysqlのインストーラー↓

MySQL :: MySQL Community Downloads

 

Python側のコネクターのインストール

pip install PyMySQ

 

 

PythonからMysqlにアクセスする

 

 

# ライブラリの読み込み
import pymysql

# MySQLのデータベースに接続する
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='password',
                             db='test',
                             )
c = connection.cursor()

# 日本語のデータをINSERTする
sql = "INSERT INTO user VALUES (1, '太郎')

# クエリを実行する
c.execute(sql)

# クエリを保存する
c.commit()

 

 

これを実行して、テーブルの中身を確認してみる

 

 

# テーブルからデータを抽出する
sql = "SELECT * FROM user"

# 抽出結果を変数に保存する
result = c.fetchall()
print(result)

 

 

するとPCによっては日本語の部分が文字化けしていることがある。解決策は簡単で最初にpymysqlでデータベースとの接続設定をする際に引数に「charset=”utf8″」を追加してあげればよい

 

 

# MySQLのデータベースに接続する
connection = pymysql.connect(
    host='localhost', 
    user='user', 
    password='password', 
    db='test',
    charset="utf8" #←これを追加する
    )

 

 

 

 

 

コメント

タイトルとURLをコピーしました