提问人:fafottos 提问时间:4/6/2023 更新时间:4/7/2023 访问量:48
索引超出范围/条件问题
Index out of range/ conditional issues
问:
因此,我正在尝试运行一个条件,该条件根据 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赞
Rick James
4/7/2023
#1
您大概可以切换到 Upsert (INSERT ...重复更新......并简化代码,加快代码速度,避免问题。
评论
db
user_amount_raw
print(type(user_amount_raw))
execute
Cursor.fetch...