Python导出SqlServerl数据字典为excel
sql代码
SELECTtableName = D.name ,tableIntroduce = isnull(F.value,
''),sort = A.colorder,fieldName = A.name,catogary = B.name,bytes = A.Length,lengths = COLUMNPROPERTY(A.id,
A.name,
'PRECISION'),scales = isnull(COLUMNPROPERTY(A.id,
A.name,
'Scale'),
0),isOrNotNull =
CaseWhen A.isnullable = 1 Then '√'Else ''
End,primarays =
CaseWhen exists(SELECT1FROMsysobjectsWherextype = 'PK'and parent_obj = A.idand name in (SELECTnameFROMsysindexesWHEREindid in(SELECTindidFROMsysindexkeysWHEREid = A.idAND colid = A.colid))) then '√'else ''
end,defauts = isnull(E.Text,
''),annotations = isnull(G.[value],
'')
FROMsyscolumns A
Left Joinsystypes BOnA.xusertype = B.xusertype
Inner Joinsysobjects DOnA.id = D.id
and D.xtype = 'U'
and D.name <> 'dtproperties'
Left Joinsyscomments EonA.cdefault = E.id
Left Joinsys.extended_properties GonA.id = G.major_id
and A.colid = G.minor_id
Left Joinsys.extended_properties FOnD.id=F.major_id and F.minor_id=0--where d.name='BigTable' --如果只查询指定表,加上此条件Order ByA.id,A.colorder

python 代码
#2023-01-29 22:30:35.660
#已通过
from datetime import datetime
import os
import pymssql as pymssql
import xlwtdef getData():connect = pymssql.connect('192.168.121.130', 'sa', 'Aa123456789', 'jiradb')if connect:print("连接成功!")cur = connect.cursor()query = """ SELECTtableName = D.name ,tableIntroduce = isnull(F.value,
''),sort = A.colorder,fieldName = A.name,catogary = B.name,bytes = A.Length,lengths = COLUMNPROPERTY(A.id,
A.name,
'PRECISION'),scales = isnull(COLUMNPROPERTY(A.id,
A.name,
'Scale'),
0),isOrNotNull =
CaseWhen A.isnullable = 1 Then '√'Else ''
End,primarays =
CaseWhen exists(SELECT1FROMsysobjectsWherextype = 'PK'and parent_obj = A.idand name in (SELECTnameFROMsysindexesWHEREindid in(SELECTindidFROMsysindexkeysWHEREid = A.idAND colid = A.colid))) then '√'else ''
end,defauts = isnull(E.Text,
''),annotations = isnull(G.[value],
'')
FROMsyscolumns A
Left Joinsystypes BOnA.xusertype = B.xusertype
Inner Joinsysobjects DOnA.id = D.id
and D.xtype = 'U'
and D.name <> 'dtproperties'
Left Joinsyscomments EonA.cdefault = E.id
Left Joinsys.extended_properties GonA.id = G.major_id
and A.colid = G.minor_id
Left Joinsys.extended_properties FOnD.id=F.major_id and F.minor_id=0--where d.name='BigTable' --如果只查询指定表,加上此条件Order ByA.id,A.colorder """cur.execute(query)data = cur.fetchall() # 元组类型return datadef exportExcel(name):data = getData()myExcel = xlwt.Workbook('encoding=utf-8')# 定义表的宽sheet1 = myExcel.add_sheet(name, cell_overwrite_ok=True)sheet1.col(0).width = 300 * 20sheet1.col(1).width = 400 * 20sheet1.col(2).width = 100 * 20sheet1.col(3).width = 300 * 20sheet1.col(4).width = 256 * 20sheet1.col(5).width = 180 * 20sheet1.col(6).width = 180 * 20sheet1.col(7).width = 100 * 20sheet1.col(8).width = 100 * 20sheet1.col(9).width = 100 * 20sheet1.col(10).width = 180 * 20sheet1.col(11).width = 800 * 20# 设置居中a1 = xlwt.Alignment()a1.horz = 0x02a1.vert = 0x01style = xlwt.XFStyle() # 赋值style为XFStyle为初始化样式style.alignment = a1today = datetime.today() # 获取当前日期,得到一个datetime对象如:(2019, 7, 2, 23, 12, 23, 424000)today_date = datetime.date(today) # 将获取到的datetime对象仅取日期如:2019-7-2items = ['数据表', '表名', '字段序号', '字段', '类型', '占用字节数', '长度', '小数点', '是否为空', '是否为主键','默认值', '注释']for col in range(len(items)):sheet1.write(0, col, items[col])# 合并第二列的name,从content获取第一列数据,[("Choleen","xxx"),()]first_col = []for i in range(len(data)):first_col.append(data[i][0])print("first_col:", first_col)# 去掉重复的列数据,并顺序不变nFirst_col = list(set(first_col))nFirst_col.sort(key=first_col.index)print("nFirst_col:", nFirst_col)row = 1for i in nFirst_col:count = first_col.count(i) # 计算重复的元素个数mergeRow = row + count - 1 # 合并后的上行数,sheet1.write_merge(row, mergeRow, 0, 0, i, style) # 第一列sheet1.write_merge(row, mergeRow, 1, 1, i, style)row = mergeRow + 1 # 从下一行开始写入# 获取data[i]中的第二个元素,循环写入for row in range(len(data)):for col in range(1, len(data[row])):result = data[row][col]str = typeof(result) # 获取类型if str == None: # 不能识别的类型,需要转换result = result.decode('utf-8')sheet1.write(row + 1, col, result, style)fileName = name + '.xls'rootPath = os.path.dirname(os.path.abspath('ExportSqlServer.py')) + '\\'print(rootPath)flag = os.path.exists(rootPath + fileName)if flag:os.remove(rootPath + fileName)myExcel.save(fileName)else:myExcel.save(fileName)def typeof(variate):type = Noneif isinstance(variate, int):type = "int"elif isinstance(variate, str):type = "str"elif isinstance(variate, float):type = "float"elif isinstance(variate, list):type = "list"elif isinstance(variate, tuple):type = "tuple"elif isinstance(variate, dict):type = "dict"elif isinstance(variate, set):type = "set"return typeif __name__ == '__main__':print("这是sqlServer导出的数据字典")# response = chardet.detect(b'\xe7\x94\xa8\xe6\x88\xb7\xe8\xa1\xa8')# print(response)exportExcel("user表")

遇到报错,连接字符串密码当时填写错了
相关文章:
Python导出SqlServerl数据字典为excel
sql代码 SELECTtableName D.name ,tableIntroduce isnull(F.value, ),sort A.colorder,fieldName A.name,catogary B.name,bytes A.Length,lengths COLUMNPROPERTY(A.id, A.name, PRECISION),scales isnull(COLUMNPROPERTY(A.id, A.name, Scale), 0),isOrNotNull Cas…...
PB:DDE服务器函数
1、GetCommandDDE() 功 能:得到DDE客户应用发送的命令。 语 法:GetCommandDDE ( string ) 参 数:string:string类型的变量,用于保存DDE客户应用发送的命令。 返回值:Integer。函数执行成功时返回1,发生错误时返回-1。如果string参数的值为NULL, GetCommandDDE()…...
awk经典实战、正则表达式
目录 1.筛选给定时间范围内的日志 2.统计独立IP 案列 需求 代码 运行结果 3.根据某字段去重 案例 运行结果 4.正则表达式 1)认识正则 2)匹配字符 3)匹配次数 4)位置锚定:定位出现的位置 5)分组…...
Python脚本-时间盲注
BlindBool_get import requests from optparse import OptionParser import threading#存放变量 DBName "" DBTables [] DBColumns [] DBData {} flag You are in #设置重连次数以及将连接改为短连接 #防止因为HTTP连接数过多导致的MAX retries exceeded with …...
面试总结-Redis篇章(十)——Redis哨兵模式、集群脑裂
Redis哨兵模式、集群脑裂 哨兵模式哨兵的作用服务状态监控 Redis集群(哨兵模式)脑裂解决办法 哨兵模式 为了保证Redis的高可用,Redis提供了哨兵模式 哨兵的作用 服务状态监控 Redis集群(哨兵模式)脑裂 假设由于网络原…...
el-table那些事
el-table那些事 获取el-table所有勾选的行数据 用于记录工作和日常学习遇到的坑,需求。 vue3element-plusts 获取el-table所有勾选的行数据 1、需要先声明一个ref变量,并赋值给el-table 2、通过el-table提供的getSelectionRows()函数获取选中的"行…...
kubernetes(一)
文章目录 1. k8s架构2. k8s集群搭建 1. k8s架构 2. k8s集群搭建...
计算机网络(6) --- https协议
计算机网络(5) --- http协议_哈里沃克的博客-CSDN博客http协议https://blog.csdn.net/m0_63488627/article/details/132089130?spm1001.2014.3001.5501 目录 1.HTTPS的出现 1.HTTPS协议介绍 2.补充概念 1.加密 1.解释 2.原因 3.加密方式 对称加…...
(三)Node.js - 模块化
1. Node.js中的模块化 Node.js中根据模块来源不同,将模块分为了3大类,分别是: 内置模块:内置模块由Node.js官方提供的,例如fs、path、http等自定义模块:用户创建的每个.js文件,都是自定义模块…...
502 bad gateway报错
代码在本地运行可以正常访问后端接口,部署服务器报错502。直接检查防火墙状态是否开启,先关闭防火墙试一下。如果是防火墙的原因在打开防火墙,开放需要的端口即可。 1、先查看防火墙状态: systemctl status firewalld2、停止防火…...
Flink学习教程
最近因为用到了Flink,所以博主开了《Flink教程》专栏来记录Flink的学习笔记。 【Apache Flink v1.16 中文文档】 【官网 - Apache Flink v1.3 中文文档】 一、基础 参考链接如下: Flink教程(01)- Flink知识图谱Flink教程&…...
flutter开发实战-实现音效soundpool播放音频及控制播放暂停停止设置音量
flutter开发实战-实现音效soundpool播放音频 最近开发过程中遇到低配置设备时候,在Media播放音频时候出现音轨限制问题。所以将部分音频采用音效sound来播放。 一、音效类似iOS中的Sound 在iOS中使用sound来播放mp3音频示例如下 // 通过通知的Sound设置为voip_c…...
Sequence 2023牛客暑期多校训练营6 E
登录—专业IT笔试面试备考平台_牛客网 题目大意:有一长度为n的数组a,有q次询问,每次要求将[l,r]的区间分成k个连续区间,满足每个区间和都是偶数,能满足要求就输出YES 1<n,q<1e5;0<ai<1e10;1<l<r&l…...
【ASP.NET MVC】使用动软(二)(10)
一、添加动软生成工程 按前文添加动态到工程 双击动软 完成新建数据库服务器后 ,需要关闭重新打开 选择简单三层,注意保存位置 注意切换数据库: 生成后拷贝五个文件夹到工程目录 注意目录结构: 添加四个项目到原来的工程&…...
STM32入门学习之独立看门狗(IWDG)
1.STM32的独立看门狗是一个具有独立时钟的片上外设。通常,为了防止程序卡死,可以设置看门狗定时复位。当看看门狗被使能之后,会按初始化时设置的计数值进行计数。当根据计数值计数的倒数时间为0时,便会自动复位程序,即…...
抖音seo矩阵系统源码搭建开发详解
抖音SEO矩阵系统是一个用于提高抖音视频在搜索引擎排名的工具。如果你想开发自己的抖音SEO矩阵系统,以下是详细的步骤: 开发步骤详解: 确定你需要的功能和算法 抖音SEO矩阵系统包含很多功能,比如关键词研究、内容优化、链接建设、…...
2685. 统计完全连通分量的数量;2718. 查询后矩阵的和;1600. 王位继承顺序
2685. 统计完全连通分量的数量 核心思想:枚举所有的连通分量,然后判断这些连通分量是不是完全连通分量,完全连通分量满足边数2e 点数v(v-1)。 2718. 查询后矩阵的和 核心思想:后面的改变更重要,所以我们直接逆向思维…...
SpringBoot统一功能处理(AOP思想实现)(统一用户登录权限验证 / 异常处理 / 数据格式返回)
主要是三个处理: 1、统一用户登录权限验证; 2、统一异常处理; 3、统一数据格式返回。 目录 一、用户登录权限校验 🍅 1、使用拦截器 🎈 1.1自定义拦截器 🎈 1.2 设置自定义拦截器 🎈创建cont…...
git stash 用法
起始 今天在看一个bug,之前一个分支的版本是正常的,在新的分支上上加了很多日志没找到原因,希望回溯到之前的版本,确定下从哪个提交引入的问题,但是还不想把现在的修改提交,也不希望在Git上看到当前修改的…...
生鲜蔬果小程序的完整教程
随着互联网的发展,线上商城成为了人们购物的重要渠道。其中,小程序商城在近年来的发展中,备受关注和青睐。本文将介绍如何使用乔拓云网后台搭建生鲜果蔬配送小程序,并快速上线。 首先,登录乔拓云网后台,进入…...
终极指南:10个Browser Compatibility Data在Node.js中的高级应用技巧
终极指南:10个Browser Compatibility Data在Node.js中的高级应用技巧 【免费下载链接】browser-compat-data Browser compatibility data for Web technologies as displayed on MDN 项目地址: https://gitcode.com/gh_mirrors/br/browser-compat-data Brows…...
终极指南:如何使用UABEA高效处理Unity Asset Bundle资源
终极指南:如何使用UABEA高效处理Unity Asset Bundle资源 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEA是一款专业的C#资产包提取工具,专门针对新版本Unity引擎的Asset B…...
PyTorch 2.9镜像使用指南:Jupyter与SSH两种方式详细解析
PyTorch 2.9镜像使用指南:Jupyter与SSH两种方式详细解析 1. 镜像概述 PyTorch 2.9镜像是一个开箱即用的深度学习开发环境,预装了PyTorch 2.9框架和CUDA工具包。这个镜像特别适合需要快速搭建GPU加速开发环境的用户,无论是进行模型训练、推理…...
Spark依赖管理二选一:spark.yarn.archive和spark.yarn.jars到底怎么选?
Spark依赖管理深度抉择:spark.yarn.archive与spark.yarn.jars的架构师级决策指南 当你在凌晨三点被集群告警惊醒,发现数百个Spark作业因依赖加载超时而堆积,那一刻你会明白:依赖管理策略的选择绝非配置文件中的简单参数调整&#…...
Qwen3-Reranker-0.6B部署实战:从零开始到成功调用
Qwen3-Reranker-0.6B部署实战:从零开始到成功调用 1. 认识Qwen3-Reranker-0.6B 1.1 模型核心能力 Qwen3-Reranker-0.6B是Qwen家族最新推出的文本重排序模型,专为提升文本检索质量而设计。这个0.6B参数的模型虽然体积适中,但在多语言文本排…...
效率翻倍!LiuJuan Z-Image多图批量生成攻略,一次产出N张创意作品
效率翻倍!LiuJuan Z-Image多图批量生成攻略,一次产出N张创意作品 在AI图片生成领域,最令人头疼的莫过于反复调整参数、等待单张图片生成的低效流程。今天,我将分享如何利用LiuJuan Z-Image Generator的批量生成功能,一…...
基于RexUniNLU的Matlab科研助手开发全攻略
基于RexUniNLU的Matlab科研助手开发全攻略 科研工作繁琐耗时?让AI帮你自动解析论文、理解公式、生成报告! 1. 引言:科研工作的智能革命 作为一名科研工作者,你是否经常被这些场景困扰:面对堆积如山的论文不知从何读起…...
关于visio导出png jpg等格式图片边缘出现黄线的暂时解决方案
起因是更新windows后,visio导出图片边缘将会出现黄线,对于强迫症患者来说实在难以忍受。首先23H2是没有这个问题的,好像25H2才有的。随着我一直更新系统好像目前的黄线没有以前那么多了,但仍然有。删除更新感觉并不是一个很好的办…...
gte-base-zh低成本方案:一张3090显卡跑通达摩院向量模型
gte-base-zh低成本方案:一张3090显卡跑通达摩院向量模型 1. 方案概述与优势 1.1 为什么选择gte-base-zh? gte-base-zh是阿里巴巴达摩院基于BERT框架训练的中文文本嵌入模型,具有以下特点: 通用性强:在大规模多领域…...
如何在5分钟内快速安装Homebridge Config UI X
如何在5分钟内快速安装Homebridge Config UI X 【免费下载链接】homebridge-config-ui-x The Homebridge UI. Monitor, configure and backup Homebridge from a browser. 项目地址: https://gitcode.com/gh_mirrors/ho/homebridge-config-ui-x Homebridge Config UI X …...
