问题描述
我正在尝试从 sqlite 数据库中检索数据。目标是获得每天的费用总和。 代码:(格式不正确)
db = sql("sqlite:///financetracker.db")
test = db.execute("""
SELECT SUM(amount) AS total_amount,strftime('%Y',timestamp) AS year,strftime('%m',timestamp) AS month,STrftIME('%d',timestamp) AS day
FROM transactions
WHERE exp = 1 AND user_id = 1 AND year = strftime('%Y','Now') AND month = strftime('%m','Now')
GROUP BY year,month,day
ORDER by timestamp DESC
""")
我正在使用 cs50 库中的 sql 模块。 exp 是包含布尔值的列。这样我就过滤掉了费用。
如您所见,在 SELECT 期间,我添加了三个额外的列:year、month 和 day,然后我计算每天的总和.日期取自同一表中的另一个时间戳列。在这种情况下,test 应该是一个字典列表。 结果如下:
total_amount | 年 | 月 | 天 |
---|---|---|---|
6.5 | 2021 | 01 | 29 |
20 | 2021 | 01 | 28 |
当我在 PHPliteadmin 中执行 SELECT 时,它可以完美运行。每一列都会出现。但是由于某些原因,显示的 Python 脚本没有返回 year、month 和 day 列。仅total_amount。
以下代码:
day_1 = test[0]['day']
导致关键错误:
KeyError: 'day'
解决方法
感谢大家的投入。我刚刚解决了。由于某些原因,day、month 和 year 列都是大写字母。我不知道为什么,因为我清楚地用小写写了它们。 更奇怪的是 total_amount 在字典中保持小写。
这意味着通过输入 day_1 = test[0]['DAY']
我解决了它。