アプリケーションとしてMysql 5.6.27サーバーとpythonを使用しています。データベースとテーブルはデフォルトの に設定されutf32_general_ci
、列のタイプは に設定されていますutf8mb4
。Mac OS でAnaconda Python 2.7を使用する
私のプログラムでは、 との mysql 接続を開いていcharset='utf8mb4'
ます。さらに、接続を開いた後、以下の 3 つのステートメントを実行します。
self._cursor.execute('SET NAMES utf8mb4')
self._cursor.execute("SET CHARACTER SET utf8mb4")
self._cursor.execute("SET character_set_connection=utf8mb4")
私の問題は、テーブルに行を挿入すると、補助的な Unicode 文字が?
. 私は答えを探しましたが、既に実装したもの以外の推奨事項はないようです (この質問で詳しく説明されています)。
たとえば、Unicode 文字U+2620 'SKULL AND CROSSBONES'
は適切な Unicode として挿入されましたが、その文字'FALLEN LEAF' (U+1F342)
は?
.
mysqlの挿入につながる実際のpythonコードが関連しているかどうかはわかりませんが、念のため入れておきます。
助けてください。
--mysql insert を呼び出す関数の Python コード--
def insert_multiple_to_table(self, alliance_data_list):
list_tuple = []
for data in data_list:
dict_obj = dict.fromkeys(COLUMNS)
for name, value in data.iteritems():
if value == 'None':
value = 'null'
dict_obj[name] = value
data_tuple = tuple(dict_obj[item] for item in COLUMNS) #create an ordered list
list_tuple.append(data_tuple)
format_strings = " (" + ','.join(COLUMNS) + ") "
insert_query = "insert into " + self._tblname + format_strings + " VALUES (" + ','.join(['%s'] * len(COLUMNS)) + ")"
result = self._db.executemany(insert_query, list_tuple)
return result