首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Pandas DataFrame编码到MySQL的UTF-8

将Pandas DataFrame编码到MySQL的UTF-8
EN

Stack Overflow用户
提问于 2019-02-06 21:44:49
回答 1查看 3.6K关注 0票数 0

我正在使用Pandas,MySQL和SQLAlchemy。

我目前正在使用pandas.to_sql()将我的熊猫DataFrame (包含非ASCII文本)提交到我的MySQL数据库。请注意,对于我使用过的其他DataFrames,我的过程工作得很好

但是,对于非ascii文本,以下调用将引发错误:

代码语言:javascript
复制
df.to_sql(
        name='tableOne',
        con=engine,
        index=False,
        if_exists='replace')

产生的错误(最后一行):

代码语言:javascript
复制
UnicodeEncodeError: 'ascii' codec can't encode character '\xe5' in position 143: ordinal not in range(128)

在阅读了类似的文章之后,我发现答案是在引擎中指定'utf8‘,如下所示:

代码语言:javascript
复制
engine = create_engine(f'mysql+mysqldb://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8', encoding="utf8")

我已经尝试了所有我能想到的和我能在网上找到的一切。我改变了我的引擎,包括‘UTF 8’,' UTF-8‘等的每一个组合。我尝试手动编码我的DF的每一个文本列到UTF-8。这些都没有用。

我已经处理了以下其他类似的帖子,这些帖子似乎有类似的问题,因此也有类似的解决方案,但对我来说没有什么效果:

sql with MySQL

How to handle encoding in Python 2.7 and SQLAlchemy 🏴‍☠️

How do I get SQLAlchemy to correctly insert a unicode ellipsis into a mySQL table?

convert pandas dataframe to utf8

谢谢你的帮助!

编辑:固定脑图:'Unicode‘-> 'ascii’

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 02:16:28

e5不是ascii,也不是UTF-8.对于CHARACTER SET latin1,这就是å;这有意义吗?因此,我建议您有两个错误:一个是请求ascii,一个是提供latin1,另一个是期望utf8。

但是,正如@lenz所指出的,E5也可能是CJK字符的第一个字节。由于正在查找ascii,错误消息只显示第一个违规字节。看到接下来的两个字节将证实这一点。

我想你很想念use_unicode=True

请参阅http://mysql.rjweb.org/doc.php/charcoll#python和Panda在这一页下的注释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54563008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档