python2中在sqlite3中插入中文
# -*- coding: utf-8 -*-
import sqlite3 conn = sqlite3.connect('SWC_Perf_Info.db')
cur = conn.cursor() test_sql1 = "INSERT INTO test (name) VALUES ('我爱中国')" #gbk编码,存入数据库的时候显示的是乱码
cur.execute(test_sql1)
conn.commit()
cursor = cur.execute("SELECT name from test")
for row in cursor:
print(row[0]) #因为读取的是GBK编码内容,所以可以直接显示

test_sql2 = "INSERT INTO test (name) VALUES ('我爱中国')".decode('GBK') #unicode编码
cur.execute(test_sql2)
conn.commit()

cursor = cur.execute("SELECT name from test")
for row in cursor:
print(row[0].decode('utf-8')) #即使用的是Unicode写入的数据库,内部还是使用的UTF-8编码存入,所以需要使用UTF-8解码
print(row[0].decode('utf-8').encode('GBK')) #输出的时候可以使用Unicode输出也可以使用本地的GBK输出

test_sql3 = test_sql2.encode('utf-8') #utf-8编码
cur.execute(test_sql3)
conn.commit()

cursor = cur.execute("SELECT name from test")
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))

select_sql1 = "SELECT name from test where name = '我爱中国'" #以GBK格式查询
cursor = cur.execute(select_sql1)
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))
#查询不到结果
6
select_sql2 = "SELECT name from test where name = '我爱中国'".decode('GBK') #以Unicode格式查询
cursor = cur.execute(select_sql2)
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))
select_sql3 = "SELECT name from test where name = '我爱中国'".decode('GBK').encode('utf-8') #以utf-8格式查询
cursor = cur.execute(select_sql3)
for row in cursor:
print(row[0].decode('utf-8'))
print(row[0].decode('utf-8').encode('GBK'))

总结下来写入的时候可以使用Unicode或者UTF-8编码的字符写入数据库
读取输出的时候使用UTF-8编码或者GBK编码的字符输出
查询的语句也必须是Unicode或者utf-8格式才能查询到结果
UTF-8是可以支持直接的读取或者输出理想编码格式
python2中在sqlite3中插入中文的更多相关文章
- MySQL无法插入中文的解决方案
本人在做数据库的连接过程中,发现无法插入中文值.原因是mysql的默认编码是latin1,只须将编码改为utf8即可. 在mysql的命令行窗口中输入 status 会出现当前的编码.在mysql的安 ...
- PL/SQL客户端中执行insert语句,插入中文乱码
问题描述:在PL/SQL客户端中执行insert语句,插入中文乱码 解决方案: 1.执行脚本 select userenv('language') from dual; 结果为AMERICAN_ ...
- 在MySQL向表中插入中文时,出现:incorrect string value 错误
在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8. 一.修改数据库的默认字符集 ...
- mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决
一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表 ...
- 处理Python2.7读写文件中的中文乱码问题
1.设置默认编码 在Python代码中的任何地方出现中文,编译时都会报错,这时可以在代码的首行添加相应说明,明确utf-8编码格式,可以解决一般情况下的中文报错.当然,编程中遇到具体问题还需具体分析啦 ...
- PLSQL往表中插入中文乱码解决办法
1.查看服务器端编码:select userenv('language') from dual; 2.查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到 ...
- 数据库 - SQLite3 中的数据类型
------------------------------ 安装 Sqlite3 和 数据库查看工具: sudo apt-get install sqlite3 sudo apt-get insta ...
- python django中使用sqlite3数据库 存储二进制数据ByteArray
在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...
- MFC中使用sqlite3操作数据库
需要用到的文件有sqlite3.h .sqlite3.dll.sqlite3.lib.网上很多人分享下载地址这里不再赘述. 将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选 ...
随机推荐
- java根据word模板导出word文件
1.word模板文件处理,如下图所示在word 文档中填值的地方写入占位变量 2.将word文档另存为xml文件.编辑如下图,找到填写的占位,修改为${bcrxm}格式 3.将文件后缀名改为.ftl文 ...
- List遍历三种方法:1.for 2.增强性for 3.迭代器
package chapter09; import java.util.ArrayList;import java.util.Iterator;import java.util.List; /* * ...
- JavaScript脚本的两种放置方式
JavaScript脚本的两种放置方式 1在body里用 script标签引用 2 直接写在<script></script>标签之中
- Zookeeper笔记(一)初识Zookeeper
为什么需要Zookeeper Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master选举 ...
- hdu 1542
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意: 求所给矩形的覆盖面积 题解: 利用扫描线的思想,先将坐标离散化,之后以y轴分成多个矩形求解, ...
- c++ primer 笔记 (一)
昨天开始看的<C++ Primer>,确实不错.希望这周抓紧看完,每天做下笔记,以便以后复习. main函数返回一个值给操作系统 操作系统通过main函数返回的值来确定程序是否成功执行 ...
- BZOJ1076 [SCOI2008]奖励关 概率 状态压缩动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1076 题意概括 有n个东西,k次扔出来.每次等概率扔出其中一个. 你可以拿这个东西,但是有条件,得 ...
- 077 Apache的HBase与cdh的hue集成(不建议不同版本之间的集成)
1.修改hue的配置文件hue.ini [hbase] # Use full hostname with security. hbase_clusters=(Cluster|linux-hadoop3 ...
- poj3259 Wormholes (判负环)【spfa】(模板)
<题目链接> 题目大意: John的农场里N块地,M条路连接两块地,W个虫洞,虫洞是一条单向路,会在你离开之前把你传送到目的地,就是当你过去的时候时间会倒退Ts.我们的任务是知道会不会在从 ...
- LoRaWAN 1.1 网络协议规范 - 1 引言
LoRaWAN 1.1 网络协议规范 LoRaWAN 1.1 版本封稿很久了也没有完整啃过一遍,最近边啃边翻译,趁着这个机会把它码下来. 如果觉得哪里有问题,欢迎留言斧正. 翻译不易,转载请申明出处和 ...


