当前位置:  开发笔记 > 后端 > 正文

将Python Pandas数据帧上传到MySQL - InternalError:1366,"不正确的字符串值"

如何解决《将PythonPandas数据帧上传到MySQL-InternalError:1366,"不正确的字符串值"》经验,为你挑选了1个好方法。

我正在尝试将Pandas数据帧写入MySQL数据库,并使用了以下代码:

engine = sqlalchemy.create_engine("mysql+pymysql://root:password@localhost/skills?charset=utf8mb4")
connection = engine.connect
dataframe.head().to_sql('indeed_resumes', engine, flavor='mysql', if_exists='replace',index=True)

但是,我收到以下错误:

InternalError: (1366, "Incorrect string value: '\\xE1\\xBB\\x99i\\x0AO...' for column 'work' at row 5")

MySQL表的数据类型如下:

 mysql> desc indeed_resumes;
    +-----------+------------+------+-----+---------+-------+
    | Field     | Type       | Null | Key | Default | Extra |
    +-----------+------------+------+-----+---------+-------+
    | index     | bigint(20) | YES  | MUL | NULL    |       |
    | certs     | text       | YES  |     | NULL    |       |
    | contact   | text       | YES  |     | NULL    |       |
    | education | text       | YES  |     | NULL    |       |
    | headline  | text       | YES  |     | NULL    |       |
    | info      | text       | YES  |     | NULL    |       |
    | skills    | text       | YES  |     | NULL    |       |
    | summary   | text       | YES  |     | NULL    |       |
    | updated   | text       | YES  |     | NULL    |       |
    | work      | text       | YES  |     | NULL    |       |
    +-----------+------------+------+-----+---------+-------+
    10 rows in set (0.00 sec)

我的数据包含很长的字符串(有时大约3000个字符),因此可能会导致错误.有什么建议?



1> runawaykid..:

我好像已经解决了这个问题.看起来我还需要使用以下命令更改数据库编码.

ALTER DATABASE skills CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE indeed_resumes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

来自https://mathiasbynens.be/notes/mysql-utf8mb4:

"原来MySQL的utf8字符集只能部分实现正确的UTF-8编码.它只能存储由一到三个字节组成的UTF-8编码符号;不支持占用四个字节的编码符号.

幸运的是,MySQL 5.5.3(2010年初发布)引入了一个名为utf8mb4的新编码,它映射到正确的UTF-8,因此完全支持Unicode,包括星体符号."

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有