質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

1回答

1162閲覧

mariadbへの特殊文字の挿入について

tamo_solo

総合スコア26

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2017/12/06 21:54

CSVを読んで単純に外国人の名前をMariaDB上のテーブルに挿入するプログラムをpython2.7で作っています。今回、外国人の人名に特殊文字を含む方がおり、その方の挿入でエラーになります。どう回避したらよいでしょうか?

(自分なりにpython上でutf8やunicode変換してみたつもりなのですが、すべてうまくいきません。DBやテーブル設定がutf8であれば、意識することなく処理できると考えていたのですが...)
すみません、アドバイス、また私の説明不足の点などあれば指摘ください。

■エラーの出ている方のお名前は以下です。
xxxxÕxxxx

■エラー内容は以下です
_mysql_exceptions.OperationalError: {1336, "Incorrect string value: '\xD5oa' for column 'NAME' at row 1"}

■挿入をしようとしているカラムの設定はvarchar(180) utf8_general_ci です。

■他の設定情報は以下です。
python2.7 / Mariadb 10.2 / CentOS7

Server charset: UTF-8 Unicode (utf8)
Server connection collation:utf8mb4_unicode_ci

MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

MariaDB [(none)]>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/12/07 00:00

コマンドラインコンソールでは、エラーが出たのではなく、プログラムから挿入する際にエラーが出たのであれば、関連するプログラムのソースコードも記載していただけないでしょうか?
tamo_solo

2017/12/07 00:30

指摘ありがとうございます!長いプログラムだったので、自分で検証用プログラムを作った時点で原因が判明~解決しました!
guest

回答1

0

自己解決

自己解決しました。Mariadbやpythonの問題ではなく、CSVファイルの作成元がExcel/Windowsであったために文字コードがiso-8859-1になっていたのが原因なようです。

ファイル自体に変換をかけても良さそうですが、pythonプログラム上で該当の変数に対して.decode('iso-8859-1')としても処理可能なようです。

投稿2017/12/07 00:30

tamo_solo

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問