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

Python中如何通过单次JSON请求向数据库表批量插入多条数据

批量插入适配修改方案

核心修改逻辑

  • 首先判断请求传入的JSON是否为数组,若为单条对象则自动转为单元素数组,可同时兼容单条/批量插入场景
  • 废弃原有字符串拼接SQL的写法,改用参数化批量查询,既避免SQL注入风险,也能大幅提升批量插入的性能
  • 修复原有代码的隐藏bug:原SQL语句声明了5个插入字段(VIN, Make, Year, Color, username),但VALUES仅传入4个参数,需补充username对应的取值逻辑

修改后完整代码

@app.route('/api/addcar', methods = ['POST'])
def adding_stuff():
    request_data = request.get_json()
    # 兼容单条/批量输入:如果不是数组就包成数组
    if not isinstance(request_data, list):
        car_list = [request_data]
    else:
        car_list = request_data
    
    # 预编译参数化SQL,注意补充你缺失的username字段取值逻辑
    sql = "INSERT INTO carsTEST (VIN, Make, Year, Color, username) VALUES (%s, %s, %s, %s, %s)"
    # 批量组装参数
    params = []
    for car in car_list:
        # 注意:如果你的请求参数里没有Color、username字段,需要对应调整或者设置默认值
        new_vin = car['VIN']
        new_make = car['Make']
        new_year = car['Year']
        new_color = car['Color']
        # 补充username的取值,比如从登录态获取,这里按你自己的业务逻辑修改即可
        username = "your_business_logic_value"
        params.append((new_vin, new_make, new_year, new_color, username))
    
    conn = create_connection()
    # 用executemany执行批量插入,比循环执行单条插入性能高很多
    cursor = conn.cursor()
    cursor.executemany(sql, params)
    conn.commit()
    cursor.close()
    conn.close()
    
    return f'Post worked, inserted {len(params)} records'

注意事项

  • 你提供的示例JSON里没有Color和username字段,实际请求时需要补充对应字段,或者在代码里增加默认值、缺省校验逻辑,避免取值报错
  • 参数化查询的占位符写法根据你使用的数据库驱动可能有差异:比如MySQL用%s,SQLite用?,根据实际情况调整即可
  • 上述代码已经兼容原有单条插入的调用方式,不需要修改旧的调用逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:04