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

PySimpleGUI+Access数据库更新报错:Too few parameters. Expected 2

问题原因

你的代码混合了参数化查询与字符串拼接两种SQL参数传递方式,第二次执行时,通过字符串拼接的id值可能出现异常(比如索引越界导致返回无效值、或值不是合法数字),Access会将这个异常值识别为新的参数占位符,使得SQL语句期望接收2个参数,但你仅传入了willchange这1个参数,从而触发"参数不足"错误。

解决方案

1. 统一使用参数化查询(推荐)

将id也作为参数传递,彻底避免字符串拼接带来的问题,同时防止SQL注入风险:

if event == '-listbox-' and set == True:
    target_id = questions[values[event][0]]
    cursor.execute('UPDATE Questions SET Question_field = ? WHERE id = ?', (willchange, target_id))

2. 增加索引有效性检查

避免因列表索引越界导致的无效id值:

if event == '-listbox-' and set == True:
    selected_idx = values[event][0]
    # 检查索引是否在questions列表的有效范围内
    if 0 <= selected_idx < len(questions):
        target_id = questions[selected_idx]
        cursor.execute('UPDATE Questions SET Question_field = ? WHERE id = ?', (willchange, target_id))
    else:
        # 处理索引无效的情况,比如弹出提示或日志记录
        print("无效选择,请重新操作")

内容的提问来源于stack exchange,提问作者Rauf İlyai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:35:21