python - 将 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
解决方案
settings
是一个sqlite.Cursor
对象,因为那是execute
返回的。实际从数据库中获取数据需要其中一种fetch 方法。
推荐阅读
- pouchdb - PouchDB - Map reduce 查询不适用于 websql 适配器
- excel - 用于单元格格式的 VBA 代码链接到工作簿中的另一个工作表
- minio - 如何将对象从一个存储桶移动到另一个存储桶?
- visual-studio - Azure 部署防火墙问题
- c# - .net core Identity,获取特定的注册错误条件
- c++ - 使用 QtBluetooth 读取广告包
- ms-access - 向全球用户分发访问表单以进行验证或修改
- django - 使用按钮在 IntegerField 上添加值(Django 1.11)
- api - .net core - 如何在 AuthorizationHandler 上返回 403?
- uwp - UWP 网格行高在内容缩放变换后未更新