<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python導(dǎo)出MySQL某個(gè)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)到Excel

      一、環(huán)境準(zhǔn)備與庫(kù)安裝

      pip  install  pymysql  pandas  openpyxl 

       

      二、完整實(shí)現(xiàn)代碼

      導(dǎo)出MySQL數(shù)據(jù)庫(kù)的表結(jié)構(gòu)到Excel

      import pymysql
      import pandas as pd
      from openpyxl import load_workbook
      from openpyxl.styles import Border, Side, PatternFill, Font, Alignment
      from openpyxl.utils import get_column_letter
      
      
      class MySQLSchemaExporter:
          def __init__(self, host,  port, user, password, database):
              self.conn = pymysql.connect(
                  host=host,
                  port=port,
                  user=user,
                  password=password,
                  database=database,
                  charset='utf8mb4'
              )
              self.db_name = database
              self.excel_path = None
      
          def _get_tables_info(self):
              """獲取所有表信息"""
              query = f"""
                  SELECT TABLE_NAME AS table_name, TABLE_COMMENT AS table_comment
                  FROM INFORMATION_SCHEMA.TABLES
                  WHERE TABLE_SCHEMA = '{self.db_name}'
              """
              return pd.read_sql_query(query, self.conn)
      
          def _get_columns_info(self, table_name):
              """獲取指定表結(jié)構(gòu)詳情"""
              query = f"""
                  SELECT
                      ORDINAL_POSITION AS seq,
                      TABLE_NAME AS  table_name,
                      COLUMN_NAME AS column_name,
                      COLUMN_TYPE AS data_type,
                      COLUMN_COMMENT AS column_comment
                  FROM INFORMATION_SCHEMA.COLUMNS
                  WHERE TABLE_SCHEMA = '{self.db_name}'
                      AND TABLE_NAME = '{table_name}'
                  ORDER BY ORDINAL_POSITION
              """
              return pd.read_sql_query(query, self.conn)
      
      
          def export_schema(self, output_file):
              """主導(dǎo)出方法"""
              try:
                  # 獲取所有表信息
                  df_summary = self._get_tables_info()
                  df_summary.insert(0, '序號(hào)', range(1, len(df_summary) + 1))
                  self.excel_path = output_file
      
                  # 創(chuàng)建Excel寫(xiě)入對(duì)象
                  with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
                      # 寫(xiě)入總覽頁(yè)
                      df_summary.to_excel(
                          writer,
                          sheet_name='首頁(yè)總覽',
                          index=False,
                          header=['序號(hào)', '表名', '表注釋']
                      )
      
                      # 遍歷寫(xiě)入各表結(jié)構(gòu)
                      for _, row in df_summary.iterrows():
                          table_name = row['table_name']
                          df_columns = self._get_columns_info(table_name)
      
                          df_columns.to_excel(
                              writer,
                              sheet_name=table_name[:30],  # Excel表名最長(zhǎng)31字符
                              index=False,
                              header=['序號(hào)', '表名', '字段名稱', '字段類型', '字段注釋']
                          )
      
                  # 應(yīng)用格式和超鏈接
                  self._add_hyperlinks()
                  self._apply_formatting()
      
                  return True
      
              except Exception as e:
                  print(f"導(dǎo)出失敗: {str(e)}")
                  return False
      
              finally:
                  if self.conn:
                      self.conn.close()
      
          def _apply_formatting(self):
              """應(yīng)用格式設(shè)置"""
              wb = load_workbook(self.excel_path)
      
              # 定義樣式
              blue_fill = PatternFill(
                  start_color="0070C0",
                  end_color="0070C0",
                  fill_type="solid"
              )
              thin_border = Border(
                  left=Side(style='thin'),
                  right=Side(style='thin'),
                  top=Side(style='thin'),
                  bottom=Side(style='thin')
              )
      
              for sheet in wb.worksheets:
                  # 設(shè)置標(biāo)題行樣式
                  for cell in sheet[1]:
                      cell.fill = blue_fill
                      cell.font = Font(color="FFFFFF", bold=True)
      
                  # 設(shè)置邊框
                  for row in sheet.iter_rows(min_row=1):
                      for cell in row:
                          cell.border = thin_border
      
                  # 自適應(yīng)列寬
                  for column in sheet.columns:
                      max_length = max(
                          len(str(cell.value)) for cell in column
                      )
                      adjusted_width = max_length + 2
                      sheet.column_dimensions[
                          get_column_letter(column[0].column)
                      ].width = adjusted_width
      
              wb.save(self.excel_path)
      
      
          def _add_hyperlinks(self):
              """添加雙向超鏈接"""
              wb = load_workbook(self.excel_path)
              ws_summary = wb["首頁(yè)總覽"]
      
              # 總覽表到分表
              for row in ws_summary.iter_rows(min_row=2):
                  table_name = row[1].value
                  sheet_name = table_name[:30]
                  hyperlink = f"#'{sheet_name}'!A1"
                  row[1].hyperlink = hyperlink
                  row[1].style = "Hyperlink"
      
              # 分表到總覽表
              for sheet_name in wb.sheetnames[1:]:
                  ws = wb[sheet_name]
                  last_row = ws.max_row + 1
                  ws.cell(row=last_row, column=1, value="返回\"首頁(yè)總覽\"")
                  ws.cell(row=last_row, column=1).hyperlink = "#'首頁(yè)總覽'!A1"
                  ws.cell(row=last_row, column=1).style = "Hyperlink"
      
              wb.save(self.excel_path)
      
      
      # 使用示例
      if __name__ == "__main__":
      
          # 數(shù)據(jù)庫(kù)連接配置
          host_input = "localhost"
          port_input = 3306
          user_input = "root"
          password_input = "Root@1234"
          db_input = "mysql"
      
          exporter = MySQLSchemaExporter(host_input, port_input, user_input, password_input, db_input)
      
          success = exporter.export_schema(f"數(shù)據(jù)庫(kù){db_input}表結(jié)構(gòu).xlsx")
          if success:
              print(f"表結(jié)構(gòu)已成功導(dǎo)出至 數(shù)據(jù)庫(kù){db_input}表結(jié)構(gòu).xlsx")

       

      三、核心功能解析

      1. ??元數(shù)據(jù)采集??

        • 通過(guò)INFORMATION_SCHEMA系統(tǒng)表獲取精確表結(jié)構(gòu)
        • 自動(dòng)處理字段順序、數(shù)據(jù)類型等詳細(xì)信息
        • 支持中文字符集(utf8mb4編碼)
      2. ??專業(yè)格式控制??

        • 全表格統(tǒng)一細(xì)線邊框
        • 標(biāo)題行采用藍(lán)色填充(RGB:#0070C0)
        • 列寬根據(jù)內(nèi)容自動(dòng)調(diào)整
        • 標(biāo)題文字白色加粗顯示
      3. ??雙向超鏈接功能??

        • 總覽頁(yè)表名可點(diǎn)擊跳轉(zhuǎn)到對(duì)應(yīng)分表
        • 每個(gè)分表最后一行添加返回總覽頁(yè)的鏈接
        • 自動(dòng)處理Excel表名長(zhǎng)度限制(截?cái)喑^(guò)30字符的表名)。


      四、生成文檔示例

      ??首頁(yè)總覽:??

      序號(hào)表名(可點(diǎn)擊)表注釋
      1 user 用戶信息表
      2 order 訂單主表

      ??

       

      分表結(jié)構(gòu)頁(yè)(user表):??

      序號(hào)字段名稱數(shù)據(jù)類型字段注釋
      1 id int(11) 主鍵ID
      2 username varchar(50) 登錄用戶名
      ... ... ... ...
      返回"首頁(yè)總覽"      

       

       

       

      posted @ 2025-05-13 10:56  業(yè)余磚家  閱讀(97)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 性男女做视频观看网站| 扒开双腿猛进入喷水高潮叫声| 日本一区二区三区激情视频| 柳州市| 色综合激情丁香七月色综合| 精品人妻二区中文字幕| 东京热人妻无码一区二区av| 国产95在线 | 欧美| 污污网站18禁在线永久免费观看| 国产精品视频一区二区噜| 福利视频在线一区二区| 久久久久久亚洲精品a片成人| 国产麻豆一区二区精彩视频| 亚洲综合精品香蕉久久网| 亚洲中文字幕第二十三页| 久久人妻精品国产| 亚洲狠狠狠一区二区三区| 无套内射视频囯产| 高清自拍亚洲精品二区| 国产嫩草精品网亚洲av| 年轻女教师hd中字3| 风韵丰满妇啪啪区老老熟女杏吧| 丰满少妇高潮惨叫久久久| 偷拍一区二区三区在线视频| 国产欧美日韩精品丝袜高跟鞋| 午夜成人无码免费看网站| 亚洲熟妇丰满多毛xxxx| 久久久久国产精品熟女影院| 99久久无码一区人妻a黑| 昌邑市| 人妻av无码系列一区二区三区| 国产精品自在自线免费观看| 国产大片黄在线观看| 亚洲国产日韩欧美一区二区三区| 女人被狂躁c到高潮| 亚洲国产免费图区在线视频| 亚洲色一色噜一噜噜噜| 国产精品无码无在线观看| 四虎永久在线精品8848a| 亚洲日韩一区二区| 国产精品性色一区二区三区|