如何让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
相关产品推荐
相关产品推荐

