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

使用sqlite3向表插入两个列表时遇TypeError错误求助

问题解决

错误根源

c.execute()方法仅接受两个参数:SQL语句字符串,以及包含所有占位符对应值的单个元组/列表。你错误地将两个独立元组作为额外参数传入,导致参数数量超标的TypeError。

修正后的代码

def data_entry():
    count = 0  # Python列表是0索引,从0开始才能取到第一个元素
    while count < 73:  # 73个元素的索引范围是0-72,用<73避免漏最后一项
        # 将两个值合并为单个元组作为execute的第二个参数
        c.execute("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", 
                  (airfields[count], icao_codes[count]))
        count += 1

额外修正点说明

  • 补全了while循环末尾缺失的冒号(语法错误)
  • 修正变量名拼写错误:icao_code → icao_codes(与列表名保持一致)
  • 调整索引起始值和循环条件:避免跳过列表第一个元素,同时确保遍历全部73项

更高效的批量插入写法

使用executemany()可以一次完成所有插入,比循环调用execute()性能更优:

def data_entry():
    # 用zip将两个列表按位置配对,生成(Name, ICAO)的元组序列
    values = list(zip(airfields, icao_codes))
    c.executemany("""INSERT INTO Airfields (Name, ICAO) VALUES (?, ?)""", values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:21:42