我想将列表添加到从SELECT db.execute查询创建的字典中,然后遍历更新的字典

时间:2020-06-28 01:38:12

标签: python sql list dictionary

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

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

这将输出:

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

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

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 []中的项目添加到字典中,以便输出以下内容:

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

我最终希望对包含总计值的字典进行for循环

1 个答案:

答案 0 :(得分:0)

您正在吠错树。只需将GROUP BY子句添加到第一个查询中,然后消除第二个查询即可。

您没有提到正在使用哪个DBMS(后来;标识为sqlite3),但是如果没有SUM,就不可能使用像GROUP BY这样的聚合函数。

将实数列转换为字符串的简单方法是将$放在前面:

select “$” || sum(balance)

SQLite会将值转换(强制)为字符串。在其他DBMS或SQLite中的其他情况下,您可能需要做一个明确的案例:

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

为您提供的最后一个选择。使用返回数字的原始查询,并在UI中将格式作为字段级格式处理。通常不会将货币作为字符串来处理。根据您在Flask中使用的特定字段或表单控件,这应该很容易。