db.execute不返回适当的数据。尝试访问数据时出错

问题描述 投票:0回答:1

我有一个名为“交易”的表格。我想从该表中获取某些条件下的“份额”列。因此,我执行以下操作:

 available_shares = db.execute("SELECT SUM(shares) as total_shares FROM transactions WHERE id = :id and stock = :symbol GROUP BY stock",
                                        id=session["user_id"], symbol=request.form.get("symbol"))

为了查看此代码是否正常工作,我进入了sqlite 3,并在命令行参数中键入了以下内容:

SELECT SUM(shares) as total_shares FROM transactions WHERE id=8 AND stock= "AAPL" GROUP BY stock;

并且它返回的正确代码是:

total_shares
0

问题出现,当'total_shares'等于0时,我想从交易表中删除一行。为此,我执行以下操作(顺便说一句,它不起作用):

if available_shares[0]["total_shares"] == 0:
            db.execute("DELETE FROM transactions WHERE id=:id AND stock=:symbol", id=session["user_id"], symbol=request.form.get("symbol"))

我不知道为什么当我运行该程序时,该行仍然存在,好像该程序无法识别该条件,因此它不会删除任何内容。有谁可以帮助我吗?预先谢谢!

python sqlite
1个回答
0
投票

当您使用SUM(shares)时,如果我没记错的话,实际上是在累加一列。

所以可以说您有以下数据:ID。象征#1. FB。 1。2.陶氏。 3。3.陶氏。 3。4. FB。 -1。

如果选择SUM(FB的份额,您将获得0,但这是从列1和4相加而来的。

如果要删除第1列,则可以尝试DELETE WHERE符号= FB。

© www.soinside.com 2019 - 2024. All rights reserved.