UTF-8编码熊猫数据帧到MySQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UTF-8编码熊猫数据帧到MySQL相关的知识,希望对你有一定的参考价值。

我使用的熊猫,mysql和SQLAlchemy的。

我目前使用pandas.to_sql()提交我的熊猫数据帧 - 包含非ASCII文本 - 我的MySQL数据库。请注意,我用其他DataFrames,我的过程中完美的作品

然而,随着非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)

阅读类似的帖子后,我发现答案是在发动机指定“utf-8”,如下图所示:

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的每comination。这个作品的无

我工作过以下其他类似SO职位,这似乎有类似的问题,因此,类似的解决方案,但一切都没有为我工作:

Another UnicodeEncodeError when using pandas method to_sql with MySQL

How to handle encoding in Python 2.7 and SQLAlchemy

e5不是ASCII,也不是UTF-8。随着CHARACTER SET latin1å;那有意义吗?所以,我建议你有2个错误:一个地方是要求ASCII,一个是提供latin1的,和一个期待UTF8。

然而,随着@lenz指出,E5也成为CJK字符的第一个字节。该错误消息,因为它正在寻找ASCII码,只显示第一个问题的字节。眼看着接下来的两个字节就证实了这一点。

我认为你缺少use_unicode=True

python熊猫进一步指出那一页。

以上是关于UTF-8编码熊猫数据帧到MySQL的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate + MySQL:如何为数据库和表设置编码 utf-8

加快从 pandas 数据帧到 mysql 的数据插入

如何更改MySQL数据库编码为UTF-8或者GB2312?

巨大的稀疏数据帧到 scipy 稀疏矩阵,无需密集变换

MYSQL数据库使用UTF-8中文编码乱码的解决办法

mysql编码问题