Я использую Pandas, MySQL и SQLAlchemy.
В настоящее время я использую pandas.to_sql (), чтобы передать мой DataFrame pandas, который содержит текст не-ASCII, в мою базу данных MySQL.Обратите внимание, что с другими фреймами данных, которые я использовал, мой процесс работает отлично
Однако с текстом, не относящимся к ascii, следующий вызов вызывает ошибку:
df.to_sql(
name='tableOne',
con=engine,
index=False,
if_exists='replace')
Результирующая ошибка (последняя строка):
UnicodeEncodeError: 'ascii' codec can't encode character '\xe5' in position 143: ordinal not in range(128)
После прочтения похожих постов я обнаружил, что ответ состоит в том, чтобы указать в движке 'utf8', как показано ниже:
engine = create_engine(f'mysql+mysqldb://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8', encoding="utf8")
Я перепробовал все, что моги все, что я мог найти в Интернете.Я изменил свой движок так, чтобы он включал каждую комбинацию 'utf8', 'utf-8' и т. Д. Я пытался вручную кодировать каждый текстовый столбец моего DF в UTF-8.Ничего из этого не работает
Я работал над следующими другими, похожими сообщениями SO, у которых, похоже, есть похожие проблемы и, следовательно, похожие решения, но у меня ничего не получалось:
Еще одна UnicodeEncodeError при использовании метода панд to_sql с MySQL
Как работать с кодировкой в Python 2.7 и SQLAlchemy ?☠️
Как мнезаставить SQLAlchemy правильно вставить многоточие Юникода в таблицу mySQL?
преобразовать pandas dataframe в utf8
Спасибо за любую помощь!
Редактировать: исправлено: «Юникод» -> «ascii»