Reputation: 2085
I work a working API endpoint to create a single user.
@app.post("/entity/", response_model=List[schemas.User])
def create_user(user: schemas.User, db: Session = Depends(get_db)):
crud.create_user(db=db, user=user)
return JSONResponse(content={"message": "user created successfully"})
class User(BaseModel):
id: str = Field(default_factory=generate_id)
first_name: Optional[str] = ""
last_name: Optional[str] = ""
username: str
class Config:
orm_mode = True
def create_user(db: Session, user: schemas.User):
db_item = models.User(**user.dict())
db.add(db_item)
db.commit()
db.refresh(db_item)
return db_item
This works, but I want to create multiple Users via one api request.
I guess the create_user
function has to look somewhat like this:
def create_user(db: Session, data, user: schemas.User):
objects = []
for user in data:
db_item = models.User(**user.dict())
objects.append(dbitem)
db.bulk_save_objects(objects)
db.commit()
I just can´t my head around what is the right way to create this kind of bulkinsert
Upvotes: 0
Views: 1576
Reputation: 666
You can accept a list of users as the request body.
def create_user(db: Session, users: List[schemas.User]):
objects = []
for user in users:
db_item = models.User(**user.dict())
objects.append(dbitem)
db.bulk_save_objects(objects)
db.commit()
Upvotes: 2