在 SELECT 期间创建的列不存在

问题描述

我正在尝试从 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 期间,我添加了三个额外的列:yearmonthday,然后我计算每天的总和.日期取自同一表中的另一个时间戳列。在这种情况下,test 应该是一个字典列表。 结果如下:

total_amount
6.5 2021 01 29
20 2021 01 28

当我在 PHPliteadmin 中执行 SELECT 时,它可以完美运行。每一列都会出现。但是由于某些原因,显示的 Python 脚本没有返回 yearmonthday 列。仅total_amount

以下代码

day_1 = test[0]['day']

导致关键错误

KeyError: 'day'

解决方法

感谢大家的投入。我刚刚解决了。由于某些原因,daymonthyear 列都是大写字母。我不知道为什么,因为我清楚地用小写写了它们。 更奇怪的是 total_amount 在字典中保持小写。

这意味着通过输入 day_1 = test[0]['DAY'] 我解决了它。