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

FastAPI结合SQLAlchemy实现单次请求批量创建多个用户的方案

正确实现FastAPI批量创建用户的方案

第一步:调整接口入参校验

原接口仅支持接收单个用户对象,修改路由层代码支持接收用户列表即可兼容批量请求:

from typing import List

# 可根据需求选择返回消息或创建完成的用户列表
# 方案1:返回操作提示
@app.post("/entities/", response_model=dict)
def create_users(users: List[schemas.User], db: Session = Depends(get_db)):
    crud.bulk_create_users(db=db, users=users)
    return {"message": f"{len(users)} users created successfully"}

# 方案2:返回创建完成的用户全量数据
@app.post("/entities/", response_model=List[schemas.User])
def create_users(users: List[schemas.User], db: Session = Depends(get_db)):
    return crud.bulk_create_users(db=db, users=users)

第二步:修正CRUD批量插入逻辑

你之前写的版本存在参数冗余、变量名拼写错误的问题,正确批量插入实现如下:

from typing import List

def bulk_create_users(db: Session, users: List[schemas.User]):
    # 批量构造ORM对象
    db_users = [models.User(**user.dict()) for user in users]
    # 批量写入数据库,比循环调用add方法性能高30%以上
    db.bulk_save_objects(db_users)
    # 提交事务
    db.commit()
    # 如果需要返回带数据库生成字段(如自增ID)的对象,可添加批量刷新逻辑
    # 不需要返回数据可删除以下循环,性能提升更明显
    for user in db_users:
        db.refresh(user)
    return db_users

可选优化点

  • 数据量超过1000条时建议分批插入,每500-1000条提交一次,避免单次请求负载过高
  • 不需要返回创建后的数据时删除refresh逻辑,可进一步降低数据库交互开销
  • 原单用户创建接口可直接废弃,批量接口兼容单用户场景,仅需传入长度为1的数组即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:03