应用场景 #
基于主键对数据进行更新
使用方法 #
新建一个懒加载数据集,填写内容格式如下: #
- 如果需将数据保存到对应的表名
dataset={
"table":"表名",
"id":"id",
"fDict":{"name":"code","m_age":"age"},
"sFields":["age", "update_date"],
"autoDict":{"updater":"$username", "update_date":"curdate()"}
}
- id: 定义主键字段
- fDict: 定义写入的字段与数据库中字段的映身关系
- sFields: 特殊字段,比如数值类型,函数方法
- autoDict:会自动提交的数据
更新方法 #
参考数据填报,不同的只需增加一个update参数为1: ds_save(0,dataset,1)
关于更新的数据集格式说明 #
//适用于单行
dataset = {'id': 123, 'name':'john'}
//多行数据
dataset = [{'id': 123, 'name':'john'},{'id': 124, 'name':'smith'},]
复合主键的配置方法 #
如a,b为复合主键, 以mysql为例
dataset={
"table":"表名",
"id":"concat(a,b)",
"fDict":{"id":"concat(a,b)"},
"sFields":[],
"autoDict":{}
}
自增编码生成 #
如按照当天的序号增长
"autoCode":{"工单号":"SELECT CONCAT('SCDD',DATE_FORMAT(NOW(), '%Y%m%d'), LPAD(IFNULL(CAST(SUBSTRING(MAX(工单号), 13) AS UNSIGNED) + 1, 1),3, '0')) AS o FROM work_order WHERE 工单号 LIKE CONCAT('SCDD', DATE_FORMAT(NOW(), '%Y%m%d'), '%')"}
你也可以简写为
"autoCode":{"工单号":"SCDD"}
导入前后动作 #
在数据上传导入前后执行的sql,比如
"preSql":["truncate table abc"],
"postSql":["insert into xxx select ...."]
自定义模式 #
当数据源选择这python的情况时,提交后会向数据集传递2个参数
content: 字典或数组的字符串
update:0,1,2
这样就可以自由处理写入的动作,比如可以调用SDK写入数据
contents=$contents
update=$update
from smart_chart.common.scheduler import scheduler_manager
if update==0:
ds=scheduler_manager.add_ds(contents)
elif update==1:
ds=scheduler_manager.modify_ds(contents)
elif update==2:
ds=scheduler_manager.remove_task(contents[0])
更多python数据源的用法可参考 2.数据集说明–>特殊数据源–>Python数据集