MySQL, похоже, меняет кодировки utf-8 с '\ xce \ x94' на '\\ xce \\ x94'.Как я могу избежать этого? - PullRequest
0 голосов
/ 17 декабря 2018

В настоящее время я работаю над записью csv-таблиц в базу данных sql, используя python3 и MySQLdb.

Это часть кода, который я использую:

import MySQLdb as mbd
import pandas as pd
from sqlalchemy import create_engine
import os

#establish a connection to mysql
conn = mbd.connect(host='localhost',
               user = 'me',
               passwd = '****',
               use_unicode=True, 
               charset="utf8")

file_ = "./stackoverflow_example.tsv"

df = pd.read_csv(file_, sep = '\t', engine='python', 
             quotechar='"', decimal='.', encoding='utf-8')

df_name = os.path.basename(file_)[:-4] 

df.name = df_name

engine = create_engine('mysql+mysqldb://me:****@localhost/me?charset=utf8')

df.to_sql(con = engine, name = df.name, if_exists = 'replace', 
         index = False)

Указанный в заголовке символ «Δ» может быть прочитан пандами и отображается как b '\ xce \ x94'(закодировано).Когда я запускаю приведенный выше код, я получаю сообщение об ошибке, в котором говорится, что «\ xce \ x94» является недопустимым символом.OperationalError: (_mysql_exceptions.OperationalError) (1366, "Неверное строковое значение: '\\ xCE \\ x9463'

Как можно избежать добавления дополнительного '\' при записи таблицы в базу данных?

Я протестировал его со следующим содержимым для файла tsv: (Извините, я не знаю, как лучше отобразить содержимое tsv)

Source_ [First_Author] Мутации года * Мутации

Raamsdonk2000 trp-1-Δ63 leu2-Δ1


Версия MySQL: mysql Ver 14.14 Distrib 5.7.24

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...