#!/usr/bin/env python # encoding: UTF-8 import psycopg2 def generate_menu_sql(): try: conn = psycopg2.connect( host="39.170.26.156", port=8366, dbname="test", user="postgres", password="difyai123456" ) cursor = conn.cursor() # 查询自动化模块的权限 cursor.execute(""" SELECT code, name, action FROM permission WHERE module = 'automation' AND is_delete = 0 ORDER BY id; """) permissions = cursor.fetchall() print("自动化模块权限列表:") print("-" * 60) print(f"{'权限代码':<30} {'权限名称':<20} {'action'}") print("-" * 60) for p in permissions: print(f"{p[0]:<30} {p[1]:<20} {p[2]}") # 查询已存在的menu cursor.execute("SELECT code FROM menu WHERE is_delete = 0") existing_menus = {row[0] for row in cursor.fetchall()} conn.close() # 生成SQL sql_lines = [] sql_lines.append("-- ==============================================") sql_lines.append("-- 自动化执行模块 - 权限对应的按钮菜单") sql_lines.append("-- ==============================================") sql_lines.append("") sort_order = 1 for code, name, action in permissions: menu_code = f"automation_{action}" if menu_code in existing_menus: print(f"跳过已存在的菜单: {menu_code}") continue sql_lines.append(f"-- {name} 按钮") sql_lines.append(f"INSERT INTO menu (name, code, type, path, component, icon, permission_code, parent_id, sort, visible, status, is_delete)") sql_lines.append(f"SELECT '{name}', '{menu_code}', 3, '', '', '', '{code}',") sql_lines.append(f" (SELECT id FROM menu WHERE code = 'automation_list'), {sort_order}, 1, 1, 0") sql_lines.append(f"WHERE NOT EXISTS (SELECT 1 FROM menu WHERE code = '{menu_code}');") sql_lines.append("") sort_order += 1 sql_lines.append("COMMIT;") # 写入文件 with open("automation_menus.sql", "w", encoding="utf-8") as f: f.write("\n".join(sql_lines)) print(f"\n已生成 SQL 文件: automation_menus.sql") print(f"共生成 {sort_order - 1} 条菜单记录") except Exception as e: print("Error: " + str(e)) if __name__ == "__main__": generate_menu_sql()