import pymysql leader_Name=[] def pro_main(): connect = pymysql.Connect( host='10.123.123.123', port=3306, user='root', passwd='hahh@123', db='sh6y', charset='utf8' ) insql="SELECT NULL AS auto_id, '主持人' AS control_name, section_name, admission_id, content_text, A.file_name, file_id, A.doc_name, NULL AS upd_date FROM 10001_rough_base A LEFT JOIN 10001_doc_type_rule_tb B ON A.file_name = B.doc_name WHERE file_id NOT IN ( SELECT file_id FROM 10001_rough_base A LEFT JOIN 10001_doc_type_rule_tb B ON A.file_name = B.doc_name WHERE B.official_no = 'EMR100011' AND A.control_name = '主持人' GROUP BY file_id ) AND B.official_no = 'EMR100011' AND content_text LIKE '%主持人%' GROUP BY file_id" outsql="INSERT INTO 10001_rough_base VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)" # 获取连接器执行sql with connect.cursor() as base_cursor: base_cursor.execute(insql) res = base_cursor.fetchall() for i in range(len(res)): # print(r[4]) Get_leader_Name(res[i][4]) auto_id = res[i][0] control_name = res[i][1] section_name = res[i][2] admission_id = res[i][3] file_name =res[i][5] file_id =res[i][6] doc_name = res[i][7] upd_date = res[i][8] content_text=str(leader_Name[i]).strip() print(file_id) print(str(leader_Name[i]).strip()) # 获取数组中的元素将其插入数据库中 with connect.cursor() as base_cursor: base_cursor.execute(outsql,[auto_id, control_name, section_name, admission_id, content_text, file_name,file_id, doc_name, upd_date]) connect.commit() connect.close() # 此方法定义特殊处理:提取主任姓名 def Get_leader_Name(text): # 首先判断长度大于0再接下来做 if len(str(text).strip()) >0: # 1、(主持人)情况的解决,如果主持人前面有括号 if '(主持人)' in str(text): leader_name1 = str(text).split('(主持人)', 1)[0] leader_Name.append(leader_name1) #print(leader_name1+"---- 第一种情况") else: # 2 否则 主持人在内容中,使用另外一种切割办法 str_contain_leader = str(text).split('主持人', 1)[1] leader_name2 = str_contain_leader.split(':', 1)[0][:-2] #以:为切割依据 leader_Name.append(leader_name2) #print(leader_name2+"---- 第二种情况") if __name__ == '__main__': pro_main()