async def batch_add_daping(ns={}): db = DBPools() async with db.sqlorContext('kboss') as sor: # file_path_detail = 'C:/Users/Admin/Desktop/8.20系统录入用户明细.xlsx' file_path_detail = file_realpath(ns.get('filepath')) workbook = openpyxl.load_workbook(filename=file_path_detail, data_only=True) sheet = workbook.active # 清空表 sql_truncat = """TRUNCATE TABLE data_visualization;""" await sor.sqlExe(sql_truncat, {}) for index, row in enumerate(sheet.rows): if index == 0: continue res = [item.value for item in row] ns_dic = { 'id': uuid(), 'username': res[0], 'business_number': res[1], 'cloud_vendors': res[2], 'business_model': res[3], 'product_type': res[4], 'product_name': res[5], 'primary_category': res[6], 'secondary_category': res[7], 'tertiary_category': res[8], 'user_attribute': res[9], 'settlement_business_type': res[10], 'user_status': res[11], 'accounting_company': res[12], 'actual_amount_received': res[13], 'payment_date': str(res[14]) if res[14] else None, 'entry_date': str(res[15]) if res[15] else None, 'start_date': str(res[16]) if res[16] else None, 'end_date': str(res[17]) if res[17] else None, 'payment_method': res[18], 'cloud_service_discount': res[19], 'purchase_price': res[20], 'saleman': res[21], 'sales_director': res[22], 'regional_manager': res[23], } try: await sor.C('data_visualization', ns_dic) except Exception as e: return { 'status': False, 'msg': '第' + str(index + 1) + '行出错,' + res[0] + str(e) } return { 'status': True, 'msg': '批量添加操作成功' } ret = await batch_add_daping(params_kw) return ret