当前位置:首页 » 编程语言 » python使用sqlite3

python使用sqlite3

发布时间: 2025-10-13 05:00:56

‘壹’ pythonsqlite问题,怎么解决

python编码如果把中文数据存储至sqlite数据库某一字段中,再通过查询语句取出并进行相关的字符串操作时,经常会出现错误提示,类似于UnicodeDecodeError,提示某一类型编码不能转换。

出现这个问题的原因是因为python默认使用unicode处理sqlite3的TEXT类型(varchar类型也是如此,因为在sqlite中varchar其实就是TEXT)。python把中文存入数据库时使用了类似于GBK这样的编码,取出时会尝试把TEXT类型数据转换成unicode,从而出现错误。
由此导致的另一个不容易发现的错误是存储在数据库中的中文进行了base64之类的编码,在python中取出时不会存在错误,但是再进行base64解码,并与sqlite3中取出的其它text字段进行字符串拼接等处理,就出现编码转换错误,很难发现问题原因,可以把其它text字段进行如'aaa'.encode('gbk')编码成GBK码解决,但不提倡这种方法,更好方法如下:
解决方法是python连接sqlite数据库后进行如下设置:
conn = sqlite3.connection(“……”)
conn.text_factory = str
另外为了python代码中硬编码的中文字符串不出现问题,除了在源码开始添加
# -*- coding:utf-8 -*-
还要设置python源码的编码为utf-8
import sys
reload(sys)
sys.setdefaultencode('utf8')

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:635
制作脚本网站 发布:2025-10-20 08:17:34 浏览:926
python中的init方法 发布:2025-10-20 08:17:33 浏览:622
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:807
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:719
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1056
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:287
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:149
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:838
python股票数据获取 发布:2025-10-20 07:39:44 浏览:750