You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python库存控制系统查询数据库时触发IndexError问题求助

解决Python库存系统中MariaDB查询的IndexError问题

问题原因

当textProduto为空时,数据库查询返回空结果集,cursor.fetchall()得到的是空列表[],此时尝试访问[0][0]必然触发IndexError——空列表没有第0个元素。而输入有效商品名称时,查询能匹配到数据,fetchall()返回包含至少一个元组的列表,因此[0][0]可以正常取值。

解决方案

方案1:先检查查询结果是否为空

在访问结果前先判断列表是否有内容:

cursor.execute("SELECT COUNT(*) FROM produtos WHERE nome = %s", (textProduto,))
results = cursor.fetchall()
if results:
    count = results[0][0]
    # 后续判断逻辑,比如count > 0表示商品已存在
else:
    # 处理空输入或无匹配的情况
    print("请输入有效的商品名称")

方案2:用fetchone()替代fetchall()

如果只需获取单个值,fetchone()更高效,它会返回单个元组或None:

cursor.execute("SELECT COUNT(*) FROM produtos WHERE nome = %s", (textProduto,))
row = cursor.fetchone()
if row is not None:
    count = row[0]
    if count > 0:
        print("商品已存在")
    else:
        print("商品不存在")
else:
    print("查询无结果,请检查输入")

方案3:提前校验输入合法性

在执行查询前先过滤空输入,避免无效查询:

if not textProduto.strip():
    print("商品名称不能为空,请重新输入")
else:
    cursor.execute("SELECT COUNT(*) FROM produtos WHERE nome = %s", (textProduto,))
    count = cursor.fetchone()[0]
    # 后续业务逻辑

内容的提问来源于stack exchange,提问作者Vet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:20:33