import pymysql import yaml with open("./config.yml", "r", encoding="utf-8") as f: cfg = yaml.safe_load(f) DB = cfg["db"] def get_conn(): return pymysql.connect(**DB, cursorclass=pymysql.cursors.DictCursor) def get_table(table_name): sql = """ SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema=%s AND table_name=%s """ with get_conn() as conn: with conn.cursor() as cur: cur.execute(sql, (DB["database"], table_name)) return cur.fetchone() def get_all_tables(database=None): """获取指定数据库(默认当前库)的所有表""" schema = database or DB["database"] sql = """ SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema=%s AND table_type='BASE TABLE' ORDER BY table_name """ with get_conn() as conn: with conn.cursor() as cur: cur.execute(sql, (schema,)) return cur.fetchall() def get_columns(table_name): sql = """ SELECT column_name, data_type, column_comment FROM information_schema.columns WHERE table_schema=%s AND table_name=%s ORDER BY ordinal_position """ with get_conn() as conn: with conn.cursor() as cur: cur.execute(sql, (DB["database"], table_name)) return cur.fetchall() def mysql_to_java(mysql_type): mapping = { "bigint": "Long", "int": "Integer", "varchar": "String", "datetime": "LocalDateTime", "decimal": "BigDecimal", } return mapping.get(mysql_type, "String") def get_enum_field_names(): """查询 enums 表所有未删除的 distinct enums_name。 这些 enums_name 与业务表的 column_name (snake_case) 对应, 脚手架生成时据此判断哪些字段应走 Select 下拉框。 """ sql = """ SELECT DISTINCT enums_name FROM enums WHERE deleted_flag = 0 AND enums_name IS NOT NULL AND enums_name <> '' """ with get_conn() as conn: with conn.cursor() as cur: cur.execute(sql) rows = cur.fetchall() return [r["enums_name"] for r in rows if r.get("enums_name")]