如何使用Python将JSON对象的所有行插入SQL Server表
批量插入JSON数据到SQL Server表的方案
核心思路
不用逐个提取列,利用JSON对象的键与表列名的对应关系,动态生成插入语句后批量写入,既高效又不用硬编码每一列。
具体步骤&代码示例
假设你的原始数据是data(如果已经用json.dumps()转成了字符串,先转回到Python列表:data = json.loads(json_object)),直接用以下代码实现:
import pymssql import json # 1. 若只有JSON字符串,先转回Python列表 # json_object = json.dumps(data, indent=2) data = json.loads(json_object) # 2. 用你已建好的SQL Server连接信息 conn = pymssql.connect( server='你的服务器地址', user='用户名', password='密码', database='目标数据库名' ) cursor = conn.cursor() # 3. 动态生成插入语句 if data: # 从第一个数据项提取列名(需保证JSON的key与Table_A的列名完全匹配) columns = ', '.join(data[0].keys()) # 生成对应数量的占位符 placeholders = ', '.join(['%s'] * len(data[0].keys())) insert_sql = f"INSERT INTO Table_A ({columns}) VALUES ({placeholders})" # 4. 把所有数据项的value转成元组,组成批量插入的数据集 values_list = [tuple(item.values()) for item in data] # 5. 批量执行插入操作 cursor.executemany(insert_sql, values_list) # 提交事务 conn.commit() # 关闭连接资源 cursor.close() conn.close()
注意事项
- 确保JSON的每个键完全对应Table_A的列名(SQL Server默认大小写不敏感,但建议保持一致避免意外)。
- 如果部分JSON项缺失字段,或表列有默认值,可以先补全缺失的键:
# 提前准备Table_A的所有列名列表 all_table_columns = ['Key', 'Summary', 'Status', '列4', '列5', ...] for item in data: for col in all_table_columns: if col not in item: item[col] = None # 或设置对应列的默认值 executemany比循环逐个插入效率高得多,适合数据量较大的场景。
内容的提问来源于stack exchange,提问作者Data Analyst
相关产品推荐
相关产品推荐

