此项目旨在将数据库中的数据字典自动生成并导出为Excel文件,以便于查阅和分享。通过Python脚本实现自动化处理,利用SQLAlchemy连接数据库,并通过pandas库读取表结构信息,最后使用openpyxl库将这些信息格式化为Excel表格输出。
目前支持的数据库:
- MySQL
- GaussDB
- Postgres (待支持)
gen_datadic.py 将读取指定数据库中所有表的结构与注释,按表逐项输出为一份结构化的数据字典 Excel 文件,示例输出文件名为:<db_name>_data_dictionary.xlsx。
生成内容包括:
- 表名与表注释
- 每个字段的名称、类型(含长度/精度/小数位)、是否可空、是否主键、字段注释
- 基本样式(表头加粗、字段表格带边框)
请确保在运行前安装下列 Python 包:
# 创建虚拟环境并激活:
# 建议python版本3.10
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
# 若使用 MySQL,请安装以下包:
pip install pandas sqlalchemy mysql-connector-python openpyxl
# 若使用 GaussDB,请安装以下包:
pip install gaussdb pandas openpyxl
sh install_gaussdb_driver.sh注意:如果你使用的是系统的
mysqlclient驱动或其他 DB 驱动,create_engine的连接字符串需要相应修改。
- 克隆仓库:
git clone https://github.com/pangpang20/data-dictionary2excel.git
cd data-dictionary2excel- 编辑
gen_datadic.py中的数据库连接字符串(若不想在文件中硬编码密码,请替换为从环境变量读取或在运行前修改):
# 原始脚本中的连接字符串示例:
engine = create_engine(f'mysql+mysqlconnector://#username#:#password#@#dbhost#/{db_name}')
# 当前脚本使用(示例)
engine = create_engine(f'mysql+mysqlconnector://cyl:Audaque%40123@localhost/{db_name}')你可以将用户名/密码/host/port 改为适合你环境的值,或在脚本中改用读取环境变量的方式:
import os
user = os.environ.get('DB_USER', 'cyl')
password = os.environ.get('DB_PASSWORD', 'Audaque@123')
host = os.environ.get('DB_HOST', 'localhost')
engine = create_engine(f'mysql+mysqlconnector://{user}:{password}@{host}/{db_name}')- 运行脚本生成 Excel(示例):
python gen_datadic.py my_database_name
python gen_datadic4gaussdb.py my_database_name执行后会在当前目录生成 my_database_name_data_dictionary.xlsx。

