首页 > 解决方案 > 将 SQLite3 查询结果分配到字典时出错

问题描述

我正在尝试查询我的 SQLite3 表中的值,并将这些值中的每一个存储在我的 python 文件中的单独字典中。但是,这会返回错误:

with sqlite3.connect('database.db') as conn:
        conn.row_factory = sqlite3.Row
        cursor = conn.cursor()
        settings = cursor.execute('SELECT nhl, nba, nfl, mlb FROM settings WHERE id = ?', (userID,))
        conn.commit()
    
# Store each individual setting in dict
sports = {
        'nhl': settings[0]['nhl'],
        'nba': settings[0]['nba'],
        'nfl': settings[0]['nfl'],
        'mlb': setttings[0]['mlb']
}

如果我尝试在没有 row_factory 的情况下这样做,我也会收到错误

with sqlite3.connect('database.db') as conn:
        cursor = conn.cursor()
        settings = cursor.execute('SELECT nhl, nba, nfl, mlb FROM settings WHERE id = ?', (userID,))
        conn.commit()
    
# Store each individual setting in dict
sports = {
        'nhl': settings[0],
        'nba': settings[1],
        'nfl': settings[2],
        'mlb': setttings[3]
}

据我了解,使用 row_factory 将返回类似字典的数据结构?我得到的错误是:

TypeError: 'sqlite3.Cursor' object is not subscriptable

标签: pythonsqlite

解决方案


settings是一个sqlite.Cursor对象,因为那是execute返回的。实际从数据库中获取数据需要其中一种fetch 方法。


推荐阅读