python - web.py存储对象无法访问值

标签 python web.py

我使用 web.py 执行这个 sql 查询

db.query('SELECT EXISTS(SELECT 1 FROM episodes WHERE changed > $date LIMIT 1)', vars={'date':date})

结果是

[<Storage {'EXISTS(SELECT 1 FROM episodes WHERE changed > ? LIMIT 1)': 1}>]

理论上我知道如何将这些存储对象转换为列表。但每次我尝试时,我都会失去值“1”。 尝试 [0] 会导致 ['EXISTS(SELECT 1 FROM Episodes WHEREchanged > ? LIMIT 1)'] 没有该值。 [1] 超出范围。

如何访问“1”?

最佳答案

您有一个包含一个元素的列表,该元素的类型为Storage,并且包含查询结果。 Storage 实例就像一本字典(类型为 dict),具有使键也可以作为属性访问的额外功能。当然,只要键是合法的属性名称,而 EXISTS(SELECT 1 FROM Episodes WHEREchanged > ? LIMIT 1) 则不是。所以你必须像普通字典一样使用它:

# Prints: 1
print result[0]['EXISTS(SELECT 1 FROM episodes WHERE changed > ? LIMIT 1)']

这有点长,因此您可以考虑在 SQL 查询中为结果列指定一个别名(LIMIT 1 是不必要的,因为它隐含在 EXISTS 中):

db.query('SELECT EXISTS(SELECT 1 FROM episodes WHERE changed > $date) has_changed_after_date', vars={'date': date})
# ...
print result[0]['has_changed_after_date']
# or
print result[0].has_changed_after_date

关于python - web.py存储对象无法访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34435039/

相关文章:

python - 与 web.py 匹配的 URL

python - web.py 共享变量

python - 带有 cron 任务的 uwsgi web 应用程序?

python - 如何防止用户编辑或删除其他用户的帖子? Django

python - 当 RDD 包含用户定义的类时,为什么 Apache PySpark top() 会失败?

python - pip 不会安装包

ajax - 用模板构建 HTML 还是用 javascript 构建?

python - Seaborn FacetGrid PointPlot 标签数据点

python - 如何使用 paramiko 恢复文件传输

web.py - 获取刚刚插入到 web.py 中的记录