ns = params_kw.copy() for k,v in list(ns.items()): if v == 'NaN' or v == 'null' or v == '' or v is None: if k != 'id': del ns[k] else: ns[k] = None if v in ('NaN', 'null') else v db = DBPools() dbname = get_module_dbname('pipeline_bidding') async with db.sqlorContext(dbname) as sor: tblfields = json.loads('[{"name": "id", "title": "主键ID", "type": "str", "length": 32, "nullable": "no"}, {"name": "project_id", "title": "项目ID", "type": "str", "length": 32, "nullable": "no"}, {"name": "chapter_no", "title": "章节号", "type": "str", "length": 32, "nullable": "no"}, {"name": "parent_no", "title": "父章节号", "type": "str", "length": 32}, {"name": "title", "title": "章节标题", "type": "str", "length": 255, "nullable": "no"}, {"name": "section", "title": "所属部分", "type": "str", "length": 32, "default": "technical"}, {"name": "scoring_item_ids", "title": "对应评分项(JSON)", "type": "text"}, {"name": "outline", "title": "章节要点", "type": "text"}, {"name": "status", "title": "章节状态", "type": "str", "length": 16, "nullable": "no", "default": "pending"}, {"name": "version", "title": "版本号", "type": "int", "nullable": "no", "default": "1"}, {"name": "content", "title": "章节正文", "type": "text"}, {"name": "file_path", "title": "章节文件路径", "type": "str", "length": 500}, {"name": "word_count", "title": "字数", "type": "int", "default": "0"}, {"name": "review_score", "title": "评审得分", "type": "float", "length": 8, "dec": 2}, {"name": "max_score", "title": "对应满分", "type": "float", "length": 8, "dec": 2}, {"name": "review_comment", "title": "评审意见/改进意见", "type": "text"}, {"name": "revise_count", "title": "重做次数", "type": "int", "nullable": "no", "default": "0"}, {"name": "assignee_role", "title": "承办角色", "type": "str", "length": 64, "default": "agent.bid_writer"}, {"name": "task_id", "title": "关联任务ID", "type": "str", "length": 32}, {"name": "order_no", "title": "排序", "type": "int", "default": "0"}, {"name": "created_at", "title": "创建时间", "type": "timestamp", "nullable": "no"}, {"name": "updated_at", "title": "更新时间", "type": "timestamp"}]') tblfname = [ f['name'] for f in tblfields ] other_keys = [ k for k in ns.keys() if k in tblfname and k != 'id' ] if len(other_keys) > 0: r = await sor.U('bid_chapters', ns) debug('update success'); return { "widgettype":"Message", "options":{ "title":"Update Success", "cwidth":16, "cheight":9, "timeout":3, "message":"ok" } } return { "widgettype":"Error", "options":{ "title":"Update Error", "cwidth":16, "cheight":9, "timeout":3, "message":"failed" } }