一、问题描述
python的sqlite3接口直接使用fetchone或fetchall返回的结果是元组和元组列表,不能直观的看出每个元素对应的名称是什么,如下图所示:
使用fetchone返回的查询结果:

使用fetchall返回的查询结果:

二、解决方案
在文章 【python】sqlite3基础使用 中有python使用sqlite3的基础知识,在创建sqlite3数据库连接获得conn句柄后,该句柄拥有一个属性 row_factory ,该属性控制着游标返回的结果形式,那我们就按照官方文档说明的样例修改该属性,使得返回结果为一个对象,该对象可以按名称访问到。
参考代码如下:
查看dict_factory中的cursor.description输出内容,返回的是数据库表的每个字段本身的信息:
cursor.description
再次使用查询语句查看返回结果:
使用fetchone返回的查询结果,可以看到返回结果以字典形式展示:
fetchone
使用fetchall返回的查询结果,fetchall返回的是一个list数组,每个元素都是一个dict字典:
fetchall
demo样例:https://gitee.com/atiaisi/py_learn/blob/master/10_DataBaseOperation/10_01_sqlite.py
三、参考资料
python sqlite3官方文档:https://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.row_factory