python-3.x - 我们可以在使用熊猫数据框 python 时在 SQL 查询中传递参数吗
问题描述
我必须编程计算每个客户的联系人数量的“日期异常”,每个客户的合同数量各不相同。通过以下 3 个步骤,我正在为每个联系人正确计算日期异常,最后附加所有数据框并将其写入 excel 文件,其中包含表单(根据合同)和所有合同的合并表单。 代码如下: Step1: # 连接数据库
import pandas as pd
import numpy as np
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
'Server=XXXXXXXX;'
'Database=XXXXXXX;'
'Trusted_Connection=yes;')
Step 2: sql_query = pd.read_sql_query("Select DISTINCT ContractName , clientcode, TypeOfFile (CASE WHEN SentToBBDate > BBLoadedDate then 'ERROR - SENT DATE GREATER THAN LOAD DATE' WHEN ReceivedDate > SentToBBDate then 'ERROR - RECEIVED DATE GREATER THAN SENT DATE' WHEN ReceivedDate is NULL then 'ERROR - FILE NOT RECEIVED' ELSE 'NORMAL' END) AS Error_Message from DataDashboard Where **ContractName like '%***%**' AND ClientCode LIKE '%AAA%' Order by TypeOfFile", conn)
first = sql_query.to_csv("firstDashboard.csv")
Step 3:
first= pd.read_csv("C:\\Users\\pd\\Desktop\\firstDashboard.csv")
first = Cigna.iloc[: , 1:]
first.drop(first[(first['ERROR_MESSAGE'] == 'NORMAL')].index, inplace=True)
first.to_excel("first_DateReport.xlsx", index=False)
第 2 步和第 3 步我在同一个笔记本(Jupyter)中重复每个合同。并附加所有数据框并将结果写入一个excel文件的不同工作表中的excel文件合同中。 这是代码
writer = pd.ExcelWriter("C:\\Users\\pd\\Desktop\\Consolidated_DateReport.xlsx")
sheets_in_writer=['Conso_DateReport', 'First_DateReport','Second_DateReport']
data_frame_for_writer=[Appenddf,First, Second]
for i,j in zip(data_frame_for_writer,sheets_in_writer):
i.to_excel(writer,j,index=False)
### Assign WorkBook
workbook=writer.book
# Add a header format
header_format = workbook.add_format({'bold': True, 'size':11,
'valign': 'top','fg_color': '#c7e7ff','border': 1})
for worksheet in writer.sheets.values():
row_count = len(df.index)
column_count = len(df.columns)
### Apply same format on each sheet being saved
for i,j in zip(data_frame_for_writer,sheets_in_writer):
for col_num, value in enumerate(i.columns.values):
writer.sheets[j].write(0, col_num, value, header_format)
writer.sheets[j].freeze_panes(1,0)
writer.sheets[j].autofilter(0, 0, row_count-1, column_count-2)
writer.sheets[j].set_column(0, 7 - 1, 25)
writer.save()
如何使用循环/函数传递 Step2 和 3 中的值并避免编写相同的代码次数(11 次)。在第 2 步中,ContractName 应该在 SQL 查询中得到更改(其中 ContractNmae 像 '%AAA%)并且在第 3 步中它应该得到更改,例如第二个然后第三个到 11。任何帮助将不胜感激。
解决方案
推荐阅读
- android - qmake install 忽略 android /res 文件夹
- c# - Masterdetailpage Xml 返回错误:InitializeComponent Not found
- powershell-6.0 - 如何在 PowerShell Core 6 中递归删除文件夹?
- django - 访问模板内的 ForeignKey 字段值
- php - 在 CakePHP TreeBehavior 中使用事务?
- jquery - Django + JQuery - 遍历表行,用 json 数据更新每一行
- python-3.x - 如何从 AWS S3 在 jupyter notebook 中导入 .py 文件
- paypal - 如何在 Paypal Sync 中获取购物车详细信息选项?
- android - findViewById 不能为空
- java - 将 GC 日志与 Logback 集成