博客
关于我
python insert插入mysql 中文字符报错 及mysql编码介绍
阅读量:303 次
发布时间:2019-03-03

本文共 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/

你可能感兴趣的文章
java 重写(override)和重载(overload)区别
查看>>
java 多态
查看>>
java 多态类型转换
查看>>
java ==和equals
查看>>
java 接口(Interface)多态特性
查看>>
搜集整理随机产生人的姓名的2种方法
查看>>
最简单的Socket程序[入门篇]
查看>>
VS2005图标默认存放位置
查看>>
常用正则表达式
查看>>
C#中换行的代码
查看>>
用正则表达式过滤多余空格
查看>>
XML:采用XHTML和CSS设计可重用可换肤的WEB站点
查看>>
泳道图简介
查看>>
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
查看>>
Java判断字符串是否为金额
查看>>
skyfans之每天一个Liunx命令系列之二:uptime
查看>>
Kubernetes十三--Pod定义文件内容详解
查看>>
普歌- LRF-(简单易懂)笔记本电脑USB接口案例 接口多态(向下转型)
查看>>
Java中如何构建树结构
查看>>
解决eclipse字体背景变红或者变绿的问题
查看>>