2017-08-10 9 views
-1

Pythonで次のコードテンプレートを使用しています(ビルド/書き込みにAtomを使用)。Pythonスクリプトで複数のSQL文を実行するにはどうすればよいですか?

import pyodbc 
import pandas as pd 
import win32com.client 


cnxn = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL 
Server}',server ='prodserver', database = 'XXXX') 

cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8') 
cnxn.setencoding(str, encoding='utf-8') 
cnxn.setencoding(unicode, encoding='utf-8', ctype=pyodbc.SQL_CHAR) 
cursor = cnxn.cursor() 
script ="""SELECT AccountsCount.AccountClass, COUNT(*) as Count 
    FROM 
     (SELECT * 
     FROM XXXX.dbo.table 
     where SubNo='001' 
     AND (DATENAME(WEEKDAY, GETDATE()) = 'Sunday' AND 
    convert(date,AddDate) = DATEADD(DAY, -2, CAST(GETDATE() as DATE)) 
) OR 
    (DATENAME(WEEKDAY, GETDATE()) = 'Monday' AND 
    convert(date,AddDate) = DATEADD(DAY, -3, CAST(GETDATE() as DATE)) 
) OR 
    (DATENAME(WEEKDAY, GETDATE()) = 'Sunday' AND 
    convert(date,AddDate) = DATEADD(DAY, -2, CAST(GETDATE() as DATE)) 
) OR 
    (DATENAME(WEEKDAY, GETDATE()) NOT IN ('Sunday', 'Monday') AND 
    convert(date,AddDate) = DATEADD(DAY, -1, CAST(GETDATE() as DATE)) 
)) AS AccountsCount 
    Group by AccountsCount.AccountClass 
    """ 

df = pd.read_sql_query(script,cnxn) 
writer = pd.ExcelWriter ('ExcelFile.xlsx') 
df.to_excel(writer, sheet_name = 'Data Export') 
writer.save() 

xlApp = win32com.client.DispatchEx('Excel.Application') 
xlsPath = ('OtherExcelFile.xlsm') 
wb = xlApp.Workbooks.Open(Filename=xlsPath) 
xlApp.Run('CopyIntoOutlook') 
wb.Save() 
xlApp.Quit() 

私がやらなければならないことは、絶対に完璧に動作し、私は上記のように、それは何をする必要があるかないこのスクリプトに2つ目の、完全に独立したSQLコマンドを追加しています。私の追加のスクリプトは、この

script= """ select AccountClass, COUNT(*) as Count 
    FROM XXXX.dbo.table 
    where SubNo='001' 
    AND AddDate >= '1/1/2017' 
    Group by AccountClass """ 

のようなものである私は、任意のヘルプが大幅apprecaitedされ、私は限りスクリプトに追加するなど、試してみたもので運を持っていませんでした! 2番目のスクリプトがオリジナルと同じDBとテーブルを使用していることに気づくでしょう。私はYTDデータだけでなく、前日を見ている最上位のクエリも必要としています。

+1

あなたはどのような問題を持っていますか? 'pd.read_sql_query() 'で2番目のクエリを実行してください。 – Barmar

+0

SQL-Serverを使用しているときに、なぜこのmysqlタグが付いているのですか? – Barmar

+0

希望する出力は何ですか?新しいExcelワークシートとしての2番目のクエリ?同じプロセスを実行するが、SELECTステートメントと宛先ワークシートを変更する。 – Parfait

答えて

0

更新:

私は、これを理解することができた(write.saveの下で、次の中で書いた)

script2= """ 
select AccountClass, COUNT(*) as Count 
FROM XXXX.dbo.table 
where SubNo='001' 
AND AddDate >= '1/1/2017' 
Group by AccountClass 
""" 

df2 = pd.read_sql_query(script2,cnxn) 
writer = pd.ExcelWriter ('ExcelFile.xlsx') 
df.to_excel(writer, sheet_name = 'Data Export') 
writer.save() 
関連する問題