python—我想向从select db.execute查询创建的字典中添加一个列表,然后在更新的字典中循环

8iwquhpp  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(317)

我有以下代码来查询股票购买数据库:

dicts = db.execute("SELECT symbol, SUM(balance) FROM portfolio")

这将输出:

[{'symbol': 'F', 'SUM(balance)': 59.55}, {'symbol': 'MSI', 'SUM(balance)': 1374.1999999999998}]

以及我创建的一个列表(称为“总计”),用于将总和(余额)数字转换为货币

for item in db.execute("SELECT SUM(balance) FROM portfolio GROUP BY symbol"):
        total.append(usd(item["SUM(balance)"]))

输出:

['$59.55', '$1,374.20']

如何将total[]中的项添加到dicts,以便它输出以下内容:

[{'symbol': 'F', 'SUM(balance)': 59.55, 'total': $59.55}, {'symbol': 'MSI', 'SUM(balance)': 1374.1999999999998, 'total': $1,374.20}]

我最终希望在dict上运行一个for循环,其中包含总计的值

ecbunoof

ecbunoof1#

你找错人了。只需添加 GROUP BY 子句,并删除第二个查询。
您没有提到您正在使用的dbms(稍后;标识为sqlite3),但不应该使用像这样的聚合函数 SUM 没有一个 GROUP BY .
将实数列转换为字符串的简单方法是在 $ 致:

select “$” || sum(balance)

sqlite将值转换(强制)为字符串。在其他DBMS或sqlite中的其他情况下,可能需要执行显式case:

select “$” || cast(balance as text)

最后一个选择。使用返回数字的原始查询,并在ui中将格式处理为字段级格式。把货币当作字符串来处理是不常见的。根据您在flask中使用的特定字段或窗体控件,这应该很简单。

相关问题