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

SQLite3插入报未提供第7个绑定值 占位符与字典键匹配问题

报错根因

使用SQLite3的命名占位符(:xxx格式)做参数化插入时,占位符名称必须和传入字典的键名完全匹配,这个匹配规则和表字段名无关。
你的报错是因为占位符和传入字典的键存在3处不匹配:

  • 第7位占位符写的是:from_addrs,但传入字典里对应发送方地址的键名是from,不存在from_addrs键,因此直接触发sqlite3.ProgrammingError: You did not supply a value for binding 7错误
  • 第8位占位符写的是:to_addrs,但传入字典里对应接收方地址的键名是to,同样无匹配值
  • 最后一位占位符写的是:confirmation,但传入字典里对应确认数的键名是confirmations(末尾多了s),也无匹配值

你之前因为from是SQL保留关键字,把表字段命名为from_addrs、to_addrs的操作是正确的,但不需要让占位符名和表字段名强制对齐,只要插入语句中显式声明字段顺序、值和字段一一对应即可。

修复方法

推荐直接修改插入语句,显式指定字段列表,同时把占位符改成和传入字典键名完全一致的名称,不需要修改原始result数据,代码如下:

# 建表语句保持原有写法即可
c.execute(''' CREATE TABLE rndTable (
    blockNumber INTEGER,
    timeStamp INTEGER,
    hash BLOB,
    nonce INTEGER,
    blockHash BLOB,
    transactionIndex INTEGER,
    from_addrs BLOB,
    to_addrs BLOB,
    value INTEGER,
    gas INTEGER,
    gasPrice INTEGER,
    isError INTEGER,
    txreceipt_status INTEGER,
    input BLOB,
    contractAddress BLOB,
    cumulativeGasUsed INTEGER,
    gasUsed INTEGER,
    confirmation INTEGER
); ''')

# 修改后的插入语句:显式指定字段顺序,占位符和result字典键名完全匹配
c.executemany('''
INSERT INTO rndTable (
    blockNumber,
    timeStamp,
    hash,
    nonce,
    blockHash,
    transactionIndex,
    from_addrs,
    to_addrs,
    value,
    gas,
    gasPrice,
    isError,
    txreceipt_status,
    input,
    contractAddress,
    cumulativeGasUsed,
    gasUsed,
    confirmation
) VALUES (
    :blockNumber,
    :timeStamp,
    :hash,
    :nonce,
    :blockHash,
    :transactionIndex,
    :from,
    :to,
    :value,
    :gas,
    :gasPrice,
    :isError,
    :txreceipt_status,
    :input,
    :contractAddress,
    :cumulativeGasUsed,
    :gasUsed,
    :confirmations
)
''', result)

conn.commit()

如果不想改SQL语句,也可以在插入前批量预处理result列表里的每条字典数据:给每条记录新增from_addrs、to_addrs、confirmation三个键,值分别取原字典的from、to、confirmations对应的值,再删除原有三个键,即可适配原来写的插入语句。

注意:占位符名称不属于SQL执行语法的一部分,哪怕用保留字from、to作为占位符名,也不会触发SQL语法错误,不需要刻意转义。

内容的提问来源于stack exchange,提问作者Gerrit van Rensburg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:00:52