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表")

 

遇到报错,连接字符串密码当时填写错了

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/77486.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux新手小程序——进度条

前言 目录 前言 需要先了解 1.\r和\n 2.缓冲区 一.理解字符的含义&#xff1a; 学习c语言时&#xff0c;我们可以粗略把字符分为可显字符和控制字符. 在按回车换到下一行开始的操作时&#xff0c;实际上是进行了两个操作&#xff1a;1.让光标跳到下一行&#xff08;只…

【css问题】flex布局中,子标签宽度超出父标签宽度,导致布局出现问题

场景&#xff1a;文章标题过长时&#xff0c;只显示一行&#xff0c;且多余的部分用省略号显示。 最终效果图&#xff1a; 实现时&#xff0c;flex布局&#xff0c;出现问题&#xff1a; 发现text-overflow: ellipsis不生效&#xff0c;省略符根本没有出现。 而且因为设置了 …

【IMX6ULL驱动开发学习】21.Linux驱动之PWM子系统(以SG90舵机为例)

1.设备树部分 首先在 imx6ull.dtsi 文件中已经帮我们定义好了一些pwm的设备树节点&#xff0c;这里以pwm2为例 pwm2: pwm02084000 {compatible "fsl,imx6ul-pwm", "fsl,imx27-pwm";reg <0x02084000 0x4000>;interrupts <GIC_SPI 84 IRQ_TYP…

【总结】p49常见问题和快捷键汇总

p49常见问题和快捷键汇总 基础概念常用快捷键汇总编辑器快捷键&#xff08;不包括视口操作&#xff09;蓝图快捷键 中英文命名注意事项帧和秒的概念带星号的文件的意思编译的作用实例和原素材情景关联返回的快捷键 虚幻引擎闪退问题 基础概念 常用快捷键汇总 编辑器快捷键&am…

中国政府版 Windows 10 开发完成,即将大规模推广

早在今年 3 月 20 日&#xff0c;就有媒体曝光中国政府专用 Windows 10 已经完成第一版。而就在今天微软在上海举办的发布会中&#xff0c;微软再次透露了中国政府版 Windows 10 的最新情况——已经开始试点测试。这就意味着政府版 Windows 10 或很快大规模推广。 据了解&#…

【设计模式】工厂模式

什么是工厂模式&#xff1f; Java的工厂模式是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;而是通过使用一个共同的接口来指向新创建的对象。这种类型的设计模式属于创建型…

【C#学习笔记】引用类型(1)

文章目录 引用类型class匿名类 记录引用相等和值相等record声明 接口delegate 委托合并委托/多路广播委托 引用类型 引用类型的变量存储对其数据&#xff08;对象&#xff09;的引用&#xff0c;而值类型的变量直接包含其数据。 对于引用类型&#xff0c;两种变量可引用同一对…

10.物联网操作系统之低功耗管理

一。低功耗管理概念及其应用 1.STM32低功耗设计详解 STM32的电源管理系统主要分为&#xff1a; 备份域 调压器供电电路 ADC电源电路 2.低功耗模式 1.运行模式 2.睡眠模式 3.停机模式 4.待机模式 &#xff08;1&#xff09;睡眠模式 在睡眠模式中&#xff0c;仅关闭了内核时钟&…

数据结构——二叉树

本章代码仓库&#xff1a;堆、二叉树链式结构 文章目录 &#x1f36d;1. 树&#x1f9c1;1.1 树的概念&#x1f9c1;1.2 树的结构 &#x1f36c;2. 二叉树&#x1f36b;2.1 二叉树的概念&#x1f36b;2.2 特殊的二叉树&#x1f36b;2.3 二叉树的性质&#x1f36b;2.4 二叉树的存…

Julia 日期和时间

Julia 通过 Dates 模块提供了以下三个函数来处理日期和时间&#xff1a; Date&#xff1a;表示日期&#xff0c;精确到日&#xff0c;只显示日期。DateTime&#xff1a;表示日期和时间&#xff0c;精确到毫秒。DateTime&#xff1a;表示日时间&#xff0c;精确到纳秒&#xff…

【数据库】将excel数据导入mysql数据库

环境&#xff1a;Windows10 mysql8以上 将你要导入的excel表另存为txt格式 打开txt格式文件&#xff0c;删除表头行并另存为并更改编码方式&#xff08;由于与数据库的编码不同&#xff0c;会导致导入报错&#xff09; 通过命令行登录数据库 winr cmd进入 进入装mysql的目录位…

基于BIM+AI的建筑能源优化模型【神经网络】

推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 AEC&#xff08;建筑、工程、施工&#xff09;行业的BIM 技术&#xff0c;允许在实际施工开始之前虚拟地建造建筑物&#xff1b; 这带来了许多有形和无形的好处&#xff1a;减少成本超支、更有效的协调、增强决策权等等。…

Windows批处理基础

一、【echo】显示文本内容 echo | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/echo 显示消息或者打开或关闭命令回显功能。 如果不结合任何参数使用&#xff0c;echo 会显示当前回显设置。 1.1、echo显示文本常用命…

AIGC大模型ChatGLM2-6B:国产版chatgpt本地部署及体验

1 ChatGLM2-6B介绍 ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练&#xff0c;它具备多领域知识、代码能力、常识推理及运用能力&#xff1b;支持与用户通过自然语言对话进行交互&#xff0c;处理多种自然语言任务…

【SQL】-【计算两个varchar类型的timestamp的毫秒差】

背景 TRANSTAMP3、TRANSTAMP2在Oracle数据库中的类型为varchar&#xff0c;但实际保存的值是时间戳timestamp类型&#xff0c;现在要计算二者的毫秒差 Oracle或MySQL extract(second from (to_timestamp(TRANSTAMP3,yyyy-mm-dd hh24:mi:ss.ff) - to_timestamp(TRANSTAMP2,yyy…

运放电路之比较器的分析笔记

一、比较器 比较器分为同相比较器和反相比较器。 反相比较器电路如下&#xff1a; V11为固定值&#xff0c;这里设定的是2.5V&#xff0c;接到了运放的输入正&#xff08;V&#xff09;&#xff1b; V10为输入值&#xff0c;值可变&#xff0c;接到了运放的输入负&#xff08;V…

CADintosh X for mac CAD绘图软件2D CAD 程序 兼容 M1

CADintosh X for Mac是一个功能强大的2D CAD绘图程序&#xff0c;专为Mac用户设计。它由Lemke Software开发&#xff0c;提供了一套丰富的工具和功能&#xff0c;使用户能够轻松创建高质量的技术图纸&#xff0c;平面图和设计。 CADintosh X for Mac具有直观的用户界面&#x…

【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

物联网|按键实验---学习I/O的输入及中断的编程|函数说明的格式|如何使用CMSIS的延时|读取通过外部中断实现按键捕获代码的实现及分析-学习笔记(14)

文章目录 通过外部中断实现按键捕获代码的实现及分析Tip1:函数说明的格式Tip2:如何使用CMSIS的延时GetTick函数原型stm32f407_intr_handle.c解析中断处理函数&#xff1a;void EXTI4_IRQHandler 调试流程软件模拟调试 两种代码的比较课后作业: 通过外部中断实现按键捕获代码的实…

装修小程序,开启装修公司智能化服务的新时代

随着数字化时代的来临&#xff0c;装修小程序成为提升服务质量和效率的关键工具。装修小程序旨在为装修公司提供数字化赋能、提高客户满意度的智慧装修平台。通过装修小程序&#xff0c;装修公司能够与客户进行在线沟通、展示设计方案、提高服务满意度等操作。 装修小程序的好处…