【发布时间】:2018-02-28 17:11:51
【问题描述】:
下面的查询执行以下操作:通过 ODBC 连接到 SQL Server 数据库,运行 SQL 脚本(许多查询由“;”分隔),为两个特定查询结果创建两个数据框,然后将它们导出到内部的两个选项卡一个 Excel 工作簿:
import pyodbc
import pandas as pd
import time
name= 'ouput' + str(time.strftime("%Y-%b-%d__%H_%M_%S",time.localtime()))
print ("Connecting via ODBC")
conn = pyodbc.connect('DSN=Server DB Prod', autocommit=True)
print ("Connected!\n")
inputdir = 'H:\\Queries\\ADS'
#for script in os.listdir(inputdir):
with open(inputdir+'\\' + 'query' +'.sql','r') as inserts:
sqlScript = inserts.read()
for statement in sqlScript.split(';'):
with conn.cursor() as cur:
cur.execute(statement)
query1="Select * from #leadership"
data1=pd.read_sql_query(query1, conn).sort_values(['channel','terr_code'], ascending=[0,1]).reset_index(drop=True)
#print(data1.head(n=100))
query2="Select * from #ml"
data2=pd.read_sql_query(query2, conn).sort_values(['channel','terr_code','client_name'], ascending=[0,1,1]).reset_index(drop=True)
print('query finished')
conn.close()
writer = pd.ExcelWriter(name+ '.xlsx')
data1.to_excel(writer,'Leadership Summary')
data2.to_excel(writer,'ML Detail')
writer.save()
print("Results were succesfully exported")
但是,我希望能够通过 ODBC 连接到现有的 excel 文件,以便动态更新我的工作簿的选项卡,并且不会丢失格式和图表 - 以实现真正的自动化。任何其他允许相同的解决方案肯定会起作用。
背景:我正在尝试自动化在 SQL Server 中运行查询(通过 Python)的过程,并让输出更新现有 excel 工作表的选项卡 - 我正在考虑通过 ODBC 连接。该工作表具有特定的格式,以及基于数据构建的公式+图表。
注意:我没有写权限,只有读权限,所以我无法通过 ODBC 将“最终”SQL 表连接到 excel。我正在从 Python 中的其他来源进行一些额外的数据混合(未显示),因此通过 ODBC 将 SQL 查询连接到 excel 将不起作用。
非常感谢任何帮助。
【问题讨论】:
标签: python python-2.7 python-3.x pandas