为什么 SQL COUNT 返回一个列表?

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

我试图弄清楚某个用户是否拥有特定股票的股票,如果他没有,我想插入他刚刚购买了该股票到我的 SQL 表中,但是如果他已经拥有该股票我想更新他拥有该股票的股份数量。为了查明他是否拥有该股票的任何股份,我使用 SQL 提供的 count 命令。

count = db.execute("SELECT COUNT(shares) FROM user_stocks WHERE user_id = ? AND symbol = ?", user_id, symbol)
        if count == 0:
            db.execute("INSERT INTO user_stocks (user_id, symbol, shares) VALUES(?, ?, ?)", user_id, symbol, shares)
        else:
            count = count + shares
            db.execute("UPDATE user_stocks SET shares = ? WHERE user_id = ? AND symbol = ?", count, user_id, symbol)

但是,当我尝试更新计数时出现错误,它显示: 文件“/workspaces/43335819/pset9/finance/app.py”,第 75 行,在 buy 中 数量 = 数量 + 股数 ~~~~~~^~~~~~~~ 类型错误:只能将列表(不是“int”)连接到列表

当我阅读有关 COUNT 的文档时,它说该命令返回一个整数,但似乎它返回一个列表。我该如何解决这个问题?

我尝试过做

count = int(db.execute("SELECT COUNT(shares) FROM user_stocks WHERE user_id = ? AND symbol = ?", user_id, symbol))

但这不起作用,因为要使 int() 工作,它需要是字符串或浮点数。

python sql cs50 finance stock
1个回答
0
投票

下面这行有什么问题?

count = count + shares
  • count
    是一个整数
  • shares
    是一个列表

您无法将整数连接到列表。

一个可能的解决方案

count = count + len(shares)

通过上面的行,您处理 2 个整数,因为

len(shares)
返回一个 int

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