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()
额外优化建议
- 批量提交提升效率:每次循环都
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()
- 确认数据库字段设置:确保你的
testPrices表中lowalch和highalch字段允许为Null(创建表时要设置lowalch INT NULL类似的定义),否则即使代码传了None,MySQL也会报错。
内容的提问来源于stack exchange,提问作者Tyler -
相关产品推荐
相关产品推荐

