Python与SQL Server数据库结合导出Excel并做部分修改

Python与SQL Server数据库结合导出Excel并做部分修改

需求:在数据库中提取需要的字段内容;并根据字段内容来提取与拆分数据做为新的列最后导出到Excel文件

# -*- coding: utf-8 -*-
import pandas as pd
import re
import pymssql
import time

start_time = time.time()
print("程序开始时间:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time)))
# 建立数据库连接
conn = pymssql.connect(server='192.168.2.1', user='sa', password='123', database='YD')

# 执行 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

    # 提取 radius
    radius = 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 None

    return pd.Series([light_power, rate, radius, online_time],
                     index=['功率', '速率', 'ra', '上线'])
    				 
# 提取数据并添加到新的列中
df[['功率', '速率', 'ra', '上线']] = df['测试结果'].apply(extract_info)

df.fillna('空白', inplace=True)
df['测试结果'] = df['测试结果'].replace('None', '', regex=False)
# 添加一个新列来标记是否有任何字段为"空白"
df['是否包含空白'] = (df['功率'] == "空白") | (df['速率'] == "空白") | (df['ra'] == "空白")
df['是否包含空白'] = df['是否包含空白'].map({True: '是', False: '否'})
# 保存到新的 Excel 文件
output_file = '投诉9月份数据-0901.xlsx'
df.to_excel(output_file, index=False, engine='openpyxl')

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

最终效果图

在这里插入图片描述

### 回答1: 首先,你需要安装以下Python库: 1.pyodbc:用于连接SQL Server数据库 2.pandas:用于读取和写入Excel文件 然后,你可以使用以下代码来连接SQL Server数据库并查询数据: ``` import pyodbc import pandas as pd # 连接字符串 conn_str = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=your_server;DATABASE=your_database;UID=your_username;PWD=your_password' # 连接数据库 conn = pyodbc.connect(conn_str) # 查询数据 df = pd.read_sql('SELECT * FROM your_table', conn) # 打印查询结果 print(df) # 关闭数据库连接 conn.close() ``` 接下来,你可以使用pandas的to_sql()函数将Excel中的数据更新到SQL Server数据库表中: ``` # 读取Excel文件 df = pd.read_excel('your_file.xlsx') # 更新数据库表 df.to_sql('your_table', conn, if_exists='replace', index=False) ``` 最后,你可以使用pandas的to_excel()函数将数据库导出Excel文件: ``` # 查询数据 df = pd.read_sql('SELECT * FROM your_table', conn) # 导出Excel文件 df.to_excel('your_file.xlsx', index=False) ``` 希望这些代码能帮到你! ### 回答2: 连接数据库sqlserver可以使用pyodbc模块来实现,首先需要安装pyodbc模块,可以使用以下命令来进行安装: ``` pip install pyodbc ``` 安装完成后,可以使用以下代码来连接sqlserver数据库: ```python import pyodbc # 连接数据库 conn = pyodbc.connect( 'DRIVER={SQL Server};' 'SERVER=服务器地址;' 'DATABASE=数据库名;' 'UID=用户名;' 'PWD=密码;' ) # 创建游标 cursor = conn.cursor() # 执行SQL查询语句 cursor.execute('SELECT * FROM 表名') # 获取查询结果 result = cursor.fetchall() # 关闭游标和连接 cursor.close() conn.close() ``` 根据Excel更新数据库表,可以使用pandas库来读取Excel数据,并通过SQL语句来更新数据库表中的数据。以下是一个示例: ```python import pandas as pd # 读取Excel数据 df = pd.read_excel('文件路径') # 连接数据库并创建游标 conn = pyodbc.connect(连接数据库的代码) cursor = conn.cursor() # 遍历Excel数据,执行更新数据库表的操作 for index, row in df.iterrows(): sql = "UPDATE 表名 SET 列名1='{}', 列名2='{}' WHERE 条件列='{}'".format(row['列名1'], row['列名2'], row['条件列']) cursor.execute(sql) conn.commit() # 关闭游标和连接 cursor.close() conn.close() ``` 导出Excel可以使用pandas库的`to_excel`方法来实现,以下是一个示例: ```python # 连接数据库并创建游标 conn = pyodbc.connect(连接数据库的代码) cursor = conn.cursor() # 执行SQL查询语句 cursor.execute('SELECT * FROM 表名') # 获取查询结果 result = cursor.fetchall() # 将结果转为DataFrame df = pd.DataFrame(result, columns=['列名1', '列名2', ...]) # 将DataFrame写入Excel df.to_excel('输出文件路径', index=False) # 关闭游标和连接 cursor.close() conn.close() ``` 以上是使用Python连接数据库sqlserver,根据Excel更新数据库表,并导出Excel的简单示例代码。具体的表名、列名、条件等需要根据实际情况进行替换。 ### 回答3: 要连接SQL Server数据库并根据Excel更新数据库表,并导出Excel,可以使用Python中的PyODBC和Pandas库。 首先,需要安装PyODBC库和Pandas库。可以使用以下命令进行安装: ``` pip install pyodbc pip install pandas ``` 接下来,使用以下代码连接到SQL Server数据库: ```python import pyodbc # 连接到SQL Server数据库 conn = pyodbc.connect("Driver={SQL Server Native Client 11.0};" "Server=服务器;" "Database=数据库名称;" "UID=用户名;" "PWD=密码;") # 创建游标 cursor = conn.cursor() ``` 然后,使用Pandas库将Excel数据加载到数据框中: ```python import pandas as pd # 读取Excel数据为数据框 df = pd.read_excel('文件路径.xlsx') ``` 接下来,可以使用Pandas库提供的方法将数据框中的数据更新到数据库表中: ```python # 将数据框中的数据更新到数据库表 for index, row in df.iterrows(): cursor.execute("UPDATE 表名 SET 列名1 = ?, 列名2 = ? WHERE 条件", row['列名1'], row['列名2']) conn.commit() ``` 最后,可以使用Pandas库将更新后的数据库导出Excel文件: ```python # 导出Excel文件 df_updated = pd.read_sql('SELECT * FROM 表名', conn) df_updated.to_excel('导出文件路径.xlsx', index=False) ``` 以上是连接数据库SQL Server,根据Excel更新数据库表,并导出ExcelPython代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值