python中的sql查询返回键错误

ws51t4hk  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(298)

我正在一个网站上创建一个周期跟踪程序。我正在使用一个sql数据库来存储用户信息,我还在我的一个网页上获取用户输入的关于他们月经周期和经期的长度。我将用户输入存储在另一个表中。所以我的问题是,我正在测试计算一个特定用户的月经周期的平均长度,但是当我需要一个整数时,查询会返回一个字典。我需要它作为一个整数,因为我正在使用这个值进行一些计算。当我运行程序时(顺便说一句,我在python中使用flask),我得到一个键错误。你知道我怎么解决这个问题吗?
我有一个带有uid、prev\u period\u date、period\u length和cycle\u length列的时间表。

cycle_avg = db.execute("SELECT AVG(cycle_length) FROM timeline WHERE uid=:user_id", user_id=session["user_id"])[0]["cycle_length"]
    period_avg = db.execute("SELECT AVG(period_length) FROM timeline WHERE uid=:user_id", user_id=session["user_id"])[0]["period_length"]

我得到的错误是:

File "/home/ubuntu/f_p/application.py", line 167, in tracker
    cycle_avg = db.execute("SELECT AVG(cycle_length) FROM timeline WHERE uid=:user_id", user_id=session["user_id"])[0]["cycle_length"]

KeyError: 'cycle_length'

我该怎么解决这个问题?

wecizke3

wecizke31#

从数据库检索的结果集不包含名为 cycle_length 因为您没有为计算字段提供别名。尝试:

cycle_avg = db.execute("SELECT AVG(cycle_length) as cycle_length FROM timeline WHERE uid=:user_id", user_id=session["user_id"])[0]["cycle_length"]
period_avg = db.execute("SELECT AVG(period_length) as period_length FROM timeline WHERE uid=:user_id", user_id=session["user_id"])[0]["period_length"]

相关问题