attach

async AsyncBusinessModel.attach(data, primary_kv, parent_kv=None, allow_detached_data=True, allow_detached_table=False, check_db=True, check_logical=True, check_field=True, enable_pre_save=True, enable_post_save=True)

追加数据

使用业务模型数据保存接口进行数据保存, 允许将数据作为明细数据追加至已有的主数据上。

参数
  • data (Union[DataFrame, Dict[str, DataFrame]]) – 保存数据

  • primary_kv (Union[Any, Dict[str, Any]]) – 主表业务主键值或者键值对

  • parent_kv (Union[Any, Dict[str, Any], None]) – 追加数据所属父级表的业务主键值或者键值对 (父级表不是模型主表时必须提供)

  • allow_detached_data (bool) – 是否允许data中存在无合法关联关系的数据

  • allow_detached_table (bool) – 是否允许data中存在无法关联的数据表

  • check_db (bool) – 是否需要数据库属性校验(接口功能)

  • check_logical (bool) – 是否需要逻辑属性校验(接口功能)

  • check_field (bool) – 是否需要进行字段权限校验(接口功能)

  • enable_pre_save (bool) – 是否开启保存前置逻辑(接口功能)

  • enable_post_save (bool) – 是否开启保存后置逻辑(接口功能)

示例

例如有业务模型结构如下:

<ROOT>
    ├── <A>
    |   └── <A1>
    └── <B>

4张数据表均包含2个字段 name, parent, 其中子表的 parent 与父表的 name 字段关联。

如果需要保存 <A>, <A1> 表的数据、作为 <ROOT>name=R0 的明细数据:

df_A = pd.DataFrame([
    {'name': "A00"},
    {'name': "A10"},
    {'name': "A11"}
])
df_A1 = pd.DataFrame([
    {'name': "A00_1", "parent": "A00"},
    {'name': "A10_1", "parent": "A10"},
])

model = BusinessModel('Tree')
model.attach({'A': df_A, 'A1': df_A1}, {'name': 'R0'})

其中,由于指定 A 表数据挂在 <ROOT>name=R0 上, 其关联字段 parent 的数据可以省略(即使提供也不会生效,固定以 R0 落库)

返回类型

List[ModelDataReturnDTO]

返回

保存结果

参见

save