""" 更新f_polic_file_config表,确保使用template_code字段 从input_data字段中提取template_code并更新到template_code字段 """ import pymysql import json from datetime import datetime # 数据库连接配置 DB_CONFIG = { 'host': '152.136.177.240', 'port': 5012, 'user': 'finyx', 'password': '6QsGK6MpePZDE57Z', 'database': 'finyx', 'charset': 'utf8mb4' } # 固定值 TENANT_ID = 615873064429507639 UPDATED_BY = 655162080928945152 CURRENT_TIME = datetime.now() # 模板名称到template_code的映射 TEMPLATE_NAME_TO_CODE = { '初步核实审批表': 'PRELIMINARY_VERIFICATION_APPROVAL', '请示报告卡': 'REPORT_CARD', # 可以根据实际情况添加其他映射 } def update_template_code_from_input_data(): """ 从input_data字段中提取template_code并更新到template_code字段 如果template_code字段为空,则从input_data中提取 """ conn = pymysql.connect(**DB_CONFIG) cursor = conn.cursor(pymysql.cursors.DictCursor) print("="*60) print("开始更新template_code字段...") print("="*60) try: # 查询所有文件配置 sql = """ SELECT id, name, input_data, template_code FROM f_polic_file_config WHERE tenant_id = %s """ cursor.execute(sql, (TENANT_ID,)) configs = cursor.fetchall() updated_count = 0 for config in configs: config_id = config['id'] config_name = config['name'] input_data = config.get('input_data') existing_template_code = config.get('template_code') new_template_code = None # 如果已有template_code,跳过 if existing_template_code: print(f" ✓ {config_name} 已有template_code: {existing_template_code}") continue # 方法1: 从input_data中提取 if input_data: try: input_data_dict = json.loads(input_data) if isinstance(input_data, str) else input_data if isinstance(input_data_dict, dict): new_template_code = input_data_dict.get('template_code') if new_template_code: print(f" ✓ 从input_data中提取到template_code: {new_template_code}") except: pass # 方法2: 从映射表中获取 if not new_template_code and config_name in TEMPLATE_NAME_TO_CODE: new_template_code = TEMPLATE_NAME_TO_CODE[config_name] print(f" ✓ 从映射表获取template_code: {new_template_code}") # 如果找到了template_code,更新数据库 if new_template_code: update_sql = """ UPDATE f_polic_file_config SET template_code = %s, updated_time = %s, updated_by = %s WHERE id = %s """ cursor.execute(update_sql, (new_template_code, CURRENT_TIME, UPDATED_BY, config_id)) updated_count += 1 print(f" ✓ 更新 {config_name} 的template_code: {new_template_code}") else: print(f" ⚠ 无法确定 {config_name} 的template_code,请手动设置") conn.commit() print("\n" + "="*60) print(f"更新完成!共更新 {updated_count} 条记录") print("="*60) finally: cursor.close() conn.close() def verify_template_code(): """验证template_code字段""" conn = pymysql.connect(**DB_CONFIG) cursor = conn.cursor(pymysql.cursors.DictCursor) print("\n" + "="*60) print("验证template_code字段...") print("="*60) try: sql = """ SELECT id, name, template_code, state FROM f_polic_file_config WHERE tenant_id = %s ORDER BY name """ cursor.execute(sql, (TENANT_ID,)) configs = cursor.fetchall() print(f"\n共找到 {len(configs)} 个文件配置:\n") for config in configs: template_code = config.get('template_code') state_str = "启用" if config.get('state') == 1 else "未启用" if template_code: print(f" ✓ {config['name']}") print(f" template_code: {template_code}") print(f" 状态: {state_str}") else: print(f" ⚠ {config['name']} (缺少template_code)") print(f" 状态: {state_str}") print() finally: cursor.close() conn.close() def main(): """主函数""" try: # 更新template_code字段 update_template_code_from_input_data() # 验证结果 verify_template_code() except Exception as e: print(f"\n错误: {e}") import traceback traceback.print_exc() if __name__ == '__main__': main()