‘壹’ python3读取word文件到sqlite
大象关进冰箱需要两步走:
首先我这有个文档,里面包含了驾照考试科四试题。
‘贰’ Python2.7.5下从SQLite3中查询中文,请求帮忙!
这个你确定没有报别的错误么, cu.execute("select * from table where username=%s"%name)#找某个表中的姓名为XX的用户 %s两边要单引号的吧
‘叁’ 最近学python和bottle框架,用sqlite3,网页中文显示乱码,咋办捏
这个不是乱码,是unicode过的中文,你直接显示就是看到的中文了
‘肆’ 如何在python程序中查看sqlite3某数据库中的表名
sqlite3数据库里表的信息存储在了一个名为sqlite_master的表中
因此可以通过这条语句来查看数据库中所有表的名称
SELECT name FROM sqlite_master WHERE type='table';
下面是Python的用法
con=sqlite3.connect('database.db')
cursor=con.cursor()
cursor.execute("SELECTnameFROMsqlite_masterWHEREtype='table';")
print(cursor.fetchall())
‘伍’ Python和SQLite问题,怎么解决
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')