索引超出范围/条件问题



因此,我试图运行一个条件,根据SQL查询返回的行数,确定我是否向同一数据库添加行或更新现有行。如果我的owned_stocks表的行数为0,这意味着用户不拥有这家公司的股票,我添加了一行,如果数字是1,那么这意味着用户已经拥有股票,我只编辑了现有的行:

count = db.execute("SELECT COUNT (symbol) FROM owned_stocks WHERE user_id=? AND symbol=?", session["user_id"], symbol["symbol"])
if count == 0:
db.execute("INSERT INTO owned_stocks (symbol, current_price, stock_number, user_id) VALUES(?, ?, ?, ?)", symbol["symbol"], symbol["price"], buy_amount, session["user_id"])#!!
else:
user_amount_raw = db.execute("SELECT stock_number FROM owned_stocks WHERE symbol=? AND user_id=?", symbol["symbol"], session["user_id"])
user_amount = int(user_amount_raw[0]["stock_number"])
db.execute("UPDATE owned_stocks SET stock_number = ? WHERE id = ? AND symbol = ?", user_amount + buy_amount, session["user_id"], symbol)

但是,当我在程序中使用用户没有股票的符号进行测试时,出现以下错误:

user_amount = int(user_amount_raw[0]["stock_number"])
IndexError: list index out of range

程序不应该执行第一个if子句吗?我尝试在单独的终端上运行SQL查询,以确认它返回的计数是0,结果确实是0。我错过了什么?

您可以切换到Upsert (INSERT…ON DUPLICATE UPDATE…),简化代码,加快代码速度,避免问题。

相关内容

  • 没有找到相关文章

最新更新