本文共 1174 字,大约阅读时间需要 3 分钟。
Python代码连接mysql数据库执行mysql语句 插入带有中文字符的语句
报错内容如下:
cur.execute(sql)
File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 181, in execute query = query.encode(db.unicode_literal.charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 952-954: ordinal not in range(256) 2020-07-21 11:23:47,644 - exec_make.py:134 - Exception Logged Traceback (most recent call last): File "exec_make.py", line 127, in Exch_insert cur.execute(sql) File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 181, in execute query = query.encode(db.unicode_literal.charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 952-954: ordinal not in range(256)
处理办法:
0、python代码 默认编码 utf-8
1、插入的中文前面加上前缀 u 声明utf编码
insert "name": u"中文"
2、在插入执行的语句前面执行一下语句
conn = connectMysql()
cur = conn.cursor()conn.set_character_set('utf8')
cur.execute('SET NAMES utf8;') cur.execute('SET CHARACTER SET utf8;') cur.execute('SET character_set_connection=utf8;') cur.execute(sql)解决OK!
【mysql编码介绍】
1、编码 encode编码 decode解码 utf-8是unicode实现的方法之一 Unicode 是「字符集」UTF-8 是「编码规则」 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point) 编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
转载地址:http://ncem.baihongyu.com/