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

Python导入JSON数据到MySQL时如何填充缺失字段?

解决方案

首先明确:用Null填充缺失字段完全可行,这不是数据本身的问题——有些OSRS物品确实没有炼金价值(比如你提供的Calcified moth),API返回的数据会省略这些字段,属于正常情况。

修改代码的核心步骤

你只需要把字典取值的方式从直接用[]改为get()方法,get()允许你指定键不存在时的默认值(这里用None,对应MySQL的Null)。修改循环内的执行代码即可:

for i in data:
    value = i   
    # 用get()获取字段,缺失时返回None(自动转为MySQL的Null)
    mycursor.execute(sqlcode, (
        value['examine'],
        value['id'],
        value['members'],
        value.get('lowalch'),  # 缺失时返回None
        value['value'],
        value.get('highalch'), # 缺失时返回None
        value['icon'],
        value['name']
    ))
    mydb.commit()

额外优化建议

  1. 批量提交提升效率:每次循环都commit()会降低导入速度,建议积累一定数量的数据后再提交,比如:
batch_size = 100
count = 0
for i in data:
    value = i   
    mycursor.execute(sqlcode, (
        value['examine'],value['id'],value['members'],
        value.get('lowalch'),value['value'],value.get('highalch'),
        value['icon'],value['name']
    ))
    count +=1
    if count % batch_size == 0:
        mydb.commit()
# 提交剩余数据
mydb.commit()
  1. 确认数据库字段设置:确保你的testPrices表中lowalch和highalch字段允许为Null(创建表时要设置lowalch INT NULL类似的定义),否则即使代码传了None,MySQL也会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:35:58