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

如何让SQLite3删除查询在Python项目的函数中正常运行?

修复SQLite3删除功能的问题

你的代码存在几个核心问题导致删除逻辑失效,直接修正后的可运行代码如下:

import sqlite3

connection = sqlite3.connect("store.db")
cur = connection.cursor()

try:
    cur.execute("CREATE TABLE store(id int, name var(250), price int, manufacturer_country var(250));")
except Exception as e:
    # 打印具体错误方便调试
    print(f'表创建失败: {e}')

def delete_a_product(): 
    global cur, connection
    
    try:
        product_id = int(input("输入要删除的商品ID: "))    
    except ValueError:
        print("请输入有效的数字ID")
        return

    # 执行删除时必须传入参数元组
    query = 'DELETE FROM store WHERE id=?'
    cur.execute(query, (product_id,))  
    connection.commit()  

    # 反馈删除结果
    if cur.rowcount > 0:
        print(f"成功删除ID为{product_id}的商品")
    else:
        print(f"未找到ID为{product_id}的商品")

# 调用测试
# delete_a_product()

关键修改说明:

  • 补全删除参数:原来的cur.execute(query)没有传入id参数,SQLite无法定位要删除的记录,必须改成cur.execute(query, (product_id,))(参数需放在元组中,单个参数也要加逗号)
  • 移除冗余逻辑:删掉了和products列表相关的代码——你的需求是操作数据库,没必要让用户输入索引修改内存列表;如果需要同步内存数据,应该在删除后重新从数据库查询更新,而非手动输入索引
  • 增加输入校验:捕获用户输入非数字的情况,避免程序崩溃
  • 优化反馈逻辑:通过cur.rowcount获取被影响的行数,明确告知用户删除是否成功
  • 修正变量名与提示:把id改为product_id避免和Python内置关键字冲突,同时修正了错误提示文案和实际场景不匹配的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:42:52