滕州住房城乡建设局网站,支付网站搭建,设计logo网站官网,wordpress 页面美化Python与SQL Server数据库结合导出Excel并做部分修改
需求#xff1a;在数据库中提取需要的字段内容#xff1b;并根据字段内容来提取与拆分数据做为新的列最后导出到Excel文件
# -*- coding: utf-8 -*-
import pandas as pd
import re
import pymssql
import timestart_ti…Python与SQL Server数据库结合导出Excel并做部分修改
需求在数据库中提取需要的字段内容并根据字段内容来提取与拆分数据做为新的列最后导出到Excel文件
# -*- coding: utf-8 -*-
import pandas as pd
import re
import pymssql
import timestart_time time.time()
print(程序开始时间:, time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(start_time)))
# 建立数据库连接
conn pymssql.connect(server192.168.2.1, usersa, password123, databaseYD)# 执行 SQL 查询
query f
SELECT 类型,流水号,账号,时间,通过时间,客服号,地市,区县,grid,测试结果
FROM TS_DATA WHERE CAST(最后质检通过时间 AS date) 2024-09-01;# 修改为你的实际表名
df pd.read_sql(query, conn)# 确保 测试结果 列中是字符串
df[测试结果] df[测试结果].astype(str)# 定义提取信息的函数
def extract_info(text):# 提取光功率包括可能的中文错误信息light_power re.search(r【功率】([^【\n]*), text)light_power light_power.group(1).strip() if light_power else None# 提取速率包括 M 字符rate re.search(r【速率】([\d.]M), text)rate rate.group(1) if rate else None# 提取 radiusradius re.search(r【ra】([^\s【]), text)radius radius.group(1).strip() if radius else None# 提取上线时间online_time re.search(r上线([\d/:\s]), text)online_time online_time.group(1) if online_time else Nonereturn pd.Series([light_power, rate, radius, online_time],index[功率, 速率, ra, 上线])# 提取数据并添加到新的列中
df[[功率, 速率, ra, 上线]] df[测试结果].apply(extract_info)df.fillna(空白, inplaceTrue)
df[测试结果] df[测试结果].replace(None, , regexFalse)
# 添加一个新列来标记是否有任何字段为空白
df[是否包含空白] (df[功率] 空白) | (df[速率] 空白) | (df[ra] 空白)
df[是否包含空白] df[是否包含空白].map({True: 是, False: 否})
# 保存到新的 Excel 文件
output_file 投诉9月份数据-0901.xlsx
df.to_excel(output_file, indexFalse, engineopenpyxl)print(f数据已处理并保存到 {output_file})# 关闭数据库连接
conn.close()
end_time time.time()
print(程序结束时间:, time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(end_time)))
run_time end_time - start_time
print(程序运行耗时:%0.2f % run_time, s)最终效果图