我在python2.5中使用sqlite3.我已经创建了一个如下所示的表:

   create table votes (
      bill text,
      senator_id text,
      vote text)

我用这样的方式访问它:

v_cur.execute("select * from votes")
row = v_cur.fetchone()
bill = row[0]
senator_id = row[1]
vote = row[2]

我希望能够做的是让fetchone(或其他方法)返回一个字典,而不是一个列表,这样我就可以通过名称而不是位置来引用该字段.例如:

bill = row['bill'] 
senator_id = row['senator_id']
vote = row['vote']

我知道你可以用MySQL做到这一点,但有人知道如何用SQLite做到这一点吗?

谢谢

推荐答案

我过go 的做法是:

def dict_factory(cursor, row):
    d = {}
    for idx,col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d

然后在您的连接中设置它:

from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect(...)
conn.row_factory = dict_factory

这在pysqlite-2.4.1和python 2.5.4下工作.

Database相关问答推荐

如何在没有sqlmock的情况下模拟db ping

使用 Java 对 mysql 数据库进行简单备份和恢复

TSQL - 表值函数中的 If..Else 语句 - 无法通过

区分大小写的数据库有什么好处吗?

将图像文件存储在 Mongo 数据库中,这是个好主意吗?

免费的便携式数据库有哪些?

在默认路径下使用脚本创建数据库?

使用 PDO 获取单行单列

从 CSV 文件填充 Android 数据库?

MongoDB中的数据库数据大小

MySQL 中 NOW()、SYSDATE() 和 CURRENT_DATE() 之间的区别

Sqlite 判断表是否为空

将文本列设为唯一键

最佳用户角色权限数据库设计实践?

防止 PostgreSQL 有时 Select 错误的查询计划

使用命令行在 Mysql 中导入压缩文件

SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects

美国城市和州的列表/数据库

Chrome 将其 SQLite 数据库保存到哪里?

清空数据库是什么意思?