Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在fastapi中批量插入json对象_Python_Sqlalchemy_Postgresql 9.3_Fastapi - Fatal编程技术网

Python 如何在fastapi中批量插入json对象

Python 如何在fastapi中批量插入json对象,python,sqlalchemy,postgresql-9.3,fastapi,Python,Sqlalchemy,Postgresql 9.3,Fastapi,我正在从nsepy.xyz获取股票数据,并将其转换为字典以添加到数据库中, 下面的单次插入可以很好地工作,但在我尝试批量插入或添加_all()时都会导致错误 单嵌件工作正常 class CRUDBhav(CRUDBase[Bhav, BhavCreate, BhavUpdate]): def create( self, db: Session, *, obj_in: BhavCreate ) -> Bhav: obj_in_data = jsonable_encoder(o

我正在从nsepy.xyz获取股票数据,并将其转换为字典以添加到数据库中, 下面的单次插入可以很好地工作,但在我尝试批量插入或添加_all()时都会导致错误

单嵌件工作正常

class CRUDBhav(CRUDBase[Bhav, BhavCreate, BhavUpdate]):
def create(
    self, db: Session, *, obj_in: BhavCreate
) -> Bhav:
    obj_in_data = jsonable_encoder(obj_in)
    db_obj = self.model(**obj_in_data)
    db.add(db_obj)
    db.commit()
    db.refresh(db_obj)
    return db_obj
但是当我尝试批量插入时

    def insert_bulk(
    self, db: Session, *, bhav_in: List[BhavCreate]
):
    obj_in_data = jsonable_encoder(bhav_in)
    db_obj = self.model(**[obj_in_data])
    db.bulk_save_objects(db_obj)
    db.commit()
    # db.refresh(db_obj)
    return obj_in_data
这给了我一个错误

backend_1       |   File "./app/api/api_v1/endpoints/bhav.py", line 35, in read_bhav
backend_1       |     crud.bhav.insert_bulk(db=db, bhav_in=price_in)
backend_1       |   File "./app/crud/crud_bhav.py", line 26, in insert_bulk
backend_1       |     db_obj = self.model(**[obj_in_data])
backend_1       | TypeError: DeclarativeMeta object argument after ** must be a mapping, not list

我应该尝试更新模式吗?除了使用add_all()或bulk_insert()这个数据外,实现解决方案的最佳方法是什么。

要解压列表,我们使用一个星号

db_obj=self.model(*[obj_in_data])