用pymysql向数据库中插入数据报错

问题:用pymysql向数据库中插入数据报错

备注:数据库表格有时候默认字符编码为latin-1:

图1

错误一:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 133-145: ordinal not in range(256)

原因:数据与数据库中字符编码不相同

解决方法:pymysql.connect()中添加charset='utf8mb4'

# Connect to the database:连接数据库

            self.connection = pymysql.connect(host=host,

                                              port=int(port),

                                              user=user,

                                              password=password,

                                              db=db,

                                              charset='utf8mb4',

                                              cursorclass=pymysql.cursors.DictCursor)

错误二:

InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE6\\xAD

原因:pymysql内部错误,插入的数据数据库表格编码格式不支持

解决方法:

运行命令  mysql> alter table 表名 convert to character set utf8mb4;

错误三:

'latin-1' codec can't encode characters in position 32-34: ordinal not in range(256)

原因:不能识别输入的中文

解决方法:value = value.encode("utf-8").decode("latin1")  #value是你输入的中文

备注:MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字。

参考链接:mysql字符集 utf8 和utf8mb4 的区别

参考链接:https://blog.csdn.net/sinat_41721615/java/article/details/94979429

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容