Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 在sqlalchemy中插入父对象时插入子对象列表_Python_Sqlalchemy - Fatal编程技术网

Python 在sqlalchemy中插入父对象时插入子对象列表

Python 在sqlalchemy中插入父对象时插入子对象列表,python,sqlalchemy,Python,Sqlalchemy,我有一个SQLAlchemy父类和子类,如下所示。两者之间的关系是一对多关系 class Parent(): systemName = Column(type_=String(100), primary_key=True) startDate = Column(type_=DateTime) childs = relationship("Child") class Child(): systemName = Column(type_=Stri

我有一个SQLAlchemy父类和子类,如下所示。两者之间的关系是一对多关系

class Parent():
    systemName = Column(type_=String(100), primary_key=True)
    startDate = Column(type_=DateTime)
    childs = relationship("Child")

class Child():
    systemName = Column(type_=String(100), primary_key=True)
    name = Column(type_=String(100))
    parentSystemName = Column(
        String(100),
        ForeignKey("Parents", ondelete="CASCADE")
    )
我已将“childs”列为响应模型中的“Child”列表。所以,当我从数据库中为父对象获取数据时,响应如下-

{
   "systemName":"62259fd1_79b5_42b9_8381_3c0f9a6be322",
   "startDate":"2020-09-12T19:24:58.357000",
   "childs":[
      {
         "systemName":"ee16d7df-748f-4766-8233-a2997adb09dd",
         "name":"Child1",
         "parentSystemName":"62259fd1_79b5_42b9_8381_3c0f9a6be322"
      },
      {
         "systemName":"89306f60-9ec2-497a-a18c-8e2bebb682ee",
         "name":"Child2",
         "parentSystemName":"62259fd1_79b5_42b9_8381_3c0f9a6be322"
      }
   ]
}
我想知道如何使用与上述相同的JSON结构(即父母中的子女列表)并将记录添加到数据库中

obj_in_data = jsonable_encoder(obj_in)
db_obj = self.model(**obj_in_data)
db.add(db_obj)
db.commit()
db.refresh(db_obj)
目前,当我尝试使用与上面使用的相同JSON结构插入数据时,我得到了一个错误-


属性错误:“dict”对象没有属性“\u sa\u instance\u state”挑剔:child的倍数是child

您的
家长
希望
孩子
孩子
实例的列表,但当然不是。一种可能的解决方法是使用
\uuuu init\uuu()
函数并对其进行调整

class父对象():
systemName=列(类型=字符串(100),主键=True)
开始日期=列(类型=日期时间)
子女=关系(“子女”)
定义初始值(*args,**kwargs):
“”“如果传递了'children',则将其强制转换为'Child'数组`
实例,如果它们尚未
如果是夸尔格语中的“儿童”:
children=kwargs.pop('children',[])
kwargs[“儿童”]=[
Child(**Child_或_数据),如果是instance(Child_或_数据),则dict)else Child_或_数据)
对于子对象中的子对象(或子对象数据)
]
超级(自,父)。\uuuuu初始化(*args,**kwargs)

此代码在创建新的
父对象之前执行,获取子对象列表,查看它们是否是对象,如果是,则将它们转换为
子对象,然后继续初始化的其余部分。

挑剔:子对象的倍数是子对象

您的
家长
希望
孩子
孩子
实例的列表,但当然不是。一种可能的解决方法是使用
\uuuu init\uuu()
函数并对其进行调整

class父对象():
systemName=列(类型=字符串(100),主键=True)
开始日期=列(类型=日期时间)
子女=关系(“子女”)
定义初始值(*args,**kwargs):
“”“如果传递了'children',则将其强制转换为'Child'数组`
实例,如果它们尚未
如果是夸尔格语中的“儿童”:
children=kwargs.pop('children',[])
kwargs[“儿童”]=[
Child(**Child_或_数据),如果是instance(Child_或_数据),则dict)else Child_或_数据)
对于子对象中的子对象(或子对象数据)
]
超级(自,父)。\uuuuu初始化(*args,**kwargs)

此代码在创建新的
父对象之前执行,获取子对象列表,查看它们是否是对象,如果是,则将它们转换为
子对象,然后继续初始化的其余部分。

您有什么代码抛出此错误?您是否先尝试初始化父对象的实例?像
父对象(my_json_obj)
?还是你用了别的什么?我已经更新了我的问题并添加了代码。”JSU encoder’将模型转换为json,这与问题中提到的完全一样,db_obj是父sqlalchemy模型实例。我在第2行遇到一个错误。你有什么代码抛出这个错误?您是否先尝试初始化父对象的实例?像
父对象(my_json_obj)
?还是你用了别的什么?我已经更新了我的问题并添加了代码。”JSU encoder’将模型转换为json,这与问题中提到的完全一样,db_obj是父sqlalchemy模型实例。我在第2行遇到一个错误。