我想根据行中的条件从烧瓶db.execute查询中删除行

时间:2020-06-30 21:15:06

标签: python sql sqlite flask

在烧瓶中,我从sqlite3数据库中提取了此查询:

   rows = db.execute("SELECT SUM(shares), symbol, FROM portfolio GROUP BY symbol")

哪个输出:

[{'SUM(shares)': 0, 'symbol': 'F'}, {'SUM(shares)': 4, 'symbol': 'FB'}, {'SUM(shares)': 3, 'symbol': 'GOOG'}]

如果“ SUM(shares)” == 0,我要删除/删除一行。我尝试过:

for row in rows:
    if row["SUM(shares)"] == 0:
        del(row)

但是它不能正常工作。感谢您能提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我建议采用另一种方法:不要首先选择它们。从sqlite doc:

如果指定了HAVING子句,则每个组对其评估一次 行作为布尔表达式。如果评估结果 HAVING子句为false,该组将被丢弃。如果HAVING子句 是一个聚合表达式,它会在 组。如果HAVING子句是非聚合表达式,则为 针对该组中任意选择的行进行评估。 HAVING表达式可能引用值,甚至是聚合函数, 不在结果中。

如果查询中包含HAVING sum(shares) > 0(在分组依据之后),则不会首先选择行。

我知道这不是对特定问题的答案。我认为 del以索引作为参数。而且我的脑后有一个老师的声音说不要在迭代列表时对其进行变异。