使用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
相关产品推荐
相关产品推荐

