问题:用pymysql向数据库中插入数据报错
备注:数据库表格有时候默认字符编码为latin-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
