dify导出数据库里所有表结构

张开发
2026/4/21 1:59:24 15 分钟阅读

分享文章

dify导出数据库里所有表结构
dify导出数据库里所有表结构dify导出数据库里所有表结构1、搭建dify2、创建一个应用1、将数据库连接都设置成环境变量2、新建节点代码执行3、新增节点迭代4、新增节点模板转换5、新增节点Simple Text Exporter需要下载工具6、新增节点输出好了到这里就完成了。dify导出数据库里所有表结构涉及知识点1、搭建dify环境并运行2、安装必要的一些插件3、新建工作流将常用的参数提取成功变量4、使用python代码获取数据库表结构数据1、搭建dify访问github地址上面有详细的部署方式下面简单说明#拉取代码git clone https://github.com/langgenius/dify.git#进入到文件夹下cd dify/docker#添加环境配置启动服务cp .env.example .envdocker compose up -d启动后就可以访问首页了直接访问部署的地址。我是部署在本地以本地为例访问:localhost(我是建立了好几个才有正常就是空白的需要自己建应用2、创建一个应用因为是一次性的操作我选择了工作流。一次性将数据库表结构都导出然后生成一个文件下载下来方便后续的应用整体工作流如下1、将数据库连接都设置成环境变量db_list #列表数据库的名称。StringDB_HOST #数据库连接IP。NumberDB_PORT #端口。StringDB_USER #用户权限最小化建议建一个仅查询的用户。StringDB_PASSWORD #密码。String2、新建节点代码执行目的将数据库列表参数从String转成数组后面就能获取到数组里的元素defmain(db,content):return{db:json.loads(db)}3、新增节点迭代目的循环遍历数据库数组获取每个数据库里所有表结构输入数据库List输出节点里获取到的数据库结构内容循环里面添加一个代码执行目的获取表结构输入将数据库参数、当前循环的List里的item输出数据库结构内容contentimportpymysqlimporttimedefmain(DB_PORT,DB_PASSWORD,DB_USER,DB_HOST,DB_DATABASE):try:# 数据库连接带超时保护connpymysql.connect(hostDB_HOST,userDB_USER,passwordDB_PASSWORD,databaseDB_DATABASE,# 从环境变量读取要导出的库名portDB_PORT,charsetutf8mb4,connect_timeout30,read_timeout30)cursorconn.cursor()# 只导出当前指定的库 contentf【数据库表结构】库名{DB_DATABASE}\n\ntotal_tables0# 获取当前库所有表cursor.execute(SHOW TABLES)tables[t[0]fortincursor.fetchall()]ifnottables:return{status:成功,table_num:0,content:f库{DB_DATABASE}没有表}# 遍历表一次一个库绝对不会超时fortableintables:# 表注释cursor.execute( SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA %s AND TABLE_NAME %s ,(DB_DATABASE,table))commentcursor.fetchone()[0]or无注释# 字段结构带注释cursor.execute( SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA %s AND TABLE_NAME %s ORDER BY ORDINAL_POSITION ,(DB_DATABASE,table))fieldscursor.fetchall()# 拼接内容完全保留你原来的格式contentf【表】{table}{comment}\nforfinfields:col_namef[0]col_typef[1]nullablef[2]keyf[3]col_commentf[4]null_strNOT NULLifnullableNOelsekey_str主键ifkeyPRIelsecomment_strf//{col_comment}ifcol_commentelsecontentf -{col_name}{col_type}{null_str}{key_str}{comment_str}.strip()\ncontent\n----------------------------------------\n\ntotal_tables1# 工作流防超时每3张表休息0.1秒iftotal_tables%30:time.sleep(0.1)conn.close()# 最终返回 1 个完整 content你直接导出文本即可return{status:成功,table_num:total_tables,content:content}exceptExceptionase:return{status:失败,content:f库{DB_DATABASE},table_num:0}4、新增节点模板转换目的将循环结果都综合起来{{step_structure|join(\n)}}5、新增节点Simple Text Exporter需要下载工具目的将文本转成文件形式6、新增节点输出好了到这里就完成了。回到探索–》应用点击运行就会生成一个文件。下载下来就可以了导出的文档格式如下

更多文章