手动运行时,Python代码可以在Power Shell中完美运行,但不能按计划运行

时间:2019-09-03 09:12:43

标签: python sql pyodbc

因此,基本上,当我从Powershell cmd窗口执行代码时,我的代码运行得很完美,但在计划时却运行不完美。

代码基本上进行一些计算,然后将数据插入到sql表中。当我手动运行它时,它可以达到预期的结果,但是当使用调度程序“ Control-M”触发它时,数据不会插入sql表中。我使用此命令来触发脚本。

cd C:\ pythonscripts \ Financial_Forecast

python fvm_bill.py

import pyodbc
server = 'servername'
database = 'DBName'
username = 'USer'
password = 'Pwd'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
import numpy as np
import pandas as pd
import scipy.stats as stats
import matplotlib.pyplot as plt
import sklearn
from sqlalchemy import *
from sklearn import linear_model
from sqlalchemy import create_engine
import urllib
df = pd.read_sql_query("Select a.*,b.[Sales Amount] from (select [Fiscal_Year],[Fiscal_Week], [0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26] from (Select [Fiscal_Year],[Fiscal_Week], [Weekdiff],[SumOfBacklog Amount - C$] from [bfd].[EMEA_Backlog_Forecast_Segments] where [Profit Center] in ('AUT','HES') and [Indicator]='TRADE' and Fiscal_Year >=2017)\
                              AS SourceTable PIVOT\
                              (\
                              SUM([SumOfBacklog Amount - C$])\
                              FOR [Weekdiff] in ([0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26])\
                              ) AS PivotTable\
                              )a\
                              inner join\
                              (select [TYCO_YEAR_ID],[TYCO_WEEK_ID],sum(CAST([Shipment_Amount_C] as float)) as [Sales Amount] from [bfd].[Billings_Base]\
  where [PROFIT_CENTER] in ('AUT','HES') and REGION_ID_REP_ORG=0401 and TRADE_INTERCO_IND= 'T'\
  group by [TYCO_YEAR_ID],[TYCO_WEEK_ID])b\
  on a.Fiscal_Year=b.TYCO_YEAR_ID and a.Fiscal_Week=b.TYCO_WEEK_ID\
  order by 1,2", cnxn)

X0=df.loc[:,'0']
X1=df.loc[:,'1']
X2=df.loc[:,'2']
X3=df.loc[:,'3']
X4=df.loc[:,'4']
X5=df.loc[:,'5']
X6=df.loc[:,'6']
X7=df.loc[:,'7']
X8=df.loc[:,'8']
X9=df.loc[:,'9']
X10=df.loc[:,'10']
X11=df.loc[:,'11']
X12=df.loc[:,'12']
X13=df.loc[:,'13']
X14=df.loc[:,'14']
X15=df.loc[:,'15']
X16=df.loc[:,'16']
X17=df.loc[:,'17']
X18=df.loc[:,'18']
X19=df.loc[:,'19']
X20=df.loc[:,'20']
X21=df.loc[:,'21']
X22=df.loc[:,'22']
X23=df.loc[:,'23']
X24=df.loc[:,'24']
X25=df.loc[:,'25']
X26=df.loc[:,'26']
Y=df.loc[:,'Sales Amount']


reg0 = linear_model.LinearRegression()
reg1 = linear_model.LinearRegression()
reg2 = linear_model.LinearRegression()
reg3 = linear_model.LinearRegression()
reg4 = linear_model.LinearRegression()
reg5 = linear_model.LinearRegression()
reg6 = linear_model.LinearRegression()
reg7 = linear_model.LinearRegression()
reg8 = linear_model.LinearRegression()
reg9 = linear_model.LinearRegression()
reg10 = linear_model.LinearRegression()
reg11 = linear_model.LinearRegression()
reg12 = linear_model.LinearRegression()
reg13 = linear_model.LinearRegression()
reg14 = linear_model.LinearRegression()
reg15 = linear_model.LinearRegression()
reg16 = linear_model.LinearRegression()
reg17 = linear_model.LinearRegression()
reg18 = linear_model.LinearRegression()
reg19 = linear_model.LinearRegression()
reg20 = linear_model.LinearRegression()
reg21 = linear_model.LinearRegression()
reg22 = linear_model.LinearRegression()
reg23 = linear_model.LinearRegression()
reg24 = linear_model.LinearRegression()
reg25 = linear_model.LinearRegression()
reg26 = linear_model.LinearRegression()

df1 = pd.read_sql_query("select [Fiscal_Year],[Fiscal_Week],[Weekdiff],[Customer Request Date Year Id],[Customer Request Date Quarter Id],[Customer Request Date Week Id],sum([SumOfBacklog Amount - C$]) as [Demand]\
  from [bfd].[EMEA_Backlog_Forecast_Segments] where [Profit Center] in ('AUT','HES') and [Indicator]='TRADE' and [Weekdiff] between 0 and 26 and [Report date]=(select Max([Report date]) from [bfd].[EMEA_Backlog_Forecast_Segments])\
  group by [Fiscal_Year],[Fiscal_Week],[Weekdiff],[Customer Request Date Week Id],[Customer Request Date Year Id],[Customer Request Date Quarter ID] order by 4,5,6", cnxn)

f0=reg0.fit(pd.DataFrame(X0),pd.DataFrame(Y))
f1=reg1.fit(pd.DataFrame(X1),pd.DataFrame(Y))
f2=reg2.fit(pd.DataFrame(X2),pd.DataFrame(Y))
f3=reg3.fit(pd.DataFrame(X3),pd.DataFrame(Y))
f4=reg4.fit(pd.DataFrame(X4),pd.DataFrame(Y))
f5=reg5.fit(pd.DataFrame(X5),pd.DataFrame(Y))
f6=reg6.fit(pd.DataFrame(X6),pd.DataFrame(Y))
f7=reg7.fit(pd.DataFrame(X7),pd.DataFrame(Y))
f8=reg8.fit(pd.DataFrame(X8),pd.DataFrame(Y))
f9=reg9.fit(pd.DataFrame(X9),pd.DataFrame(Y))
f10=reg10.fit(pd.DataFrame(X10),pd.DataFrame(Y))
f11=reg11.fit(pd.DataFrame(X11),pd.DataFrame(Y))
f12=reg12.fit(pd.DataFrame(X12),pd.DataFrame(Y))
f13=reg13.fit(pd.DataFrame(X13),pd.DataFrame(Y))
f14=reg14.fit(pd.DataFrame(X14),pd.DataFrame(Y))
f15=reg15.fit(pd.DataFrame(X15),pd.DataFrame(Y))
f16=reg16.fit(pd.DataFrame(X16),pd.DataFrame(Y))
f17=reg17.fit(pd.DataFrame(X17),pd.DataFrame(Y))
f18=reg18.fit(pd.DataFrame(X18),pd.DataFrame(Y))
f19=reg19.fit(pd.DataFrame(X19),pd.DataFrame(Y))
f20=reg20.fit(pd.DataFrame(X20),pd.DataFrame(Y))
f21=reg21.fit(pd.DataFrame(X21),pd.DataFrame(Y))
f22=reg22.fit(pd.DataFrame(X22),pd.DataFrame(Y))
f23=reg23.fit(pd.DataFrame(X23),pd.DataFrame(Y))
f24=reg24.fit(pd.DataFrame(X24),pd.DataFrame(Y))
f25=reg25.fit(pd.DataFrame(X25),pd.DataFrame(Y))
f26=reg26.fit(pd.DataFrame(X26),pd.DataFrame(Y))

df1.loc[:,"Coef"]=pd.DataFrame(data=np.array([f0.coef_[0,0],f1.coef_[0,0],f2.coef_[0,0],f3.coef_[0,0],f4.coef_[0,0],f5.coef_[0,0],f6.coef_[0,0],f7.coef_[0,0],f8.coef_[0,0],f9.coef_[0,0],f10.coef_[0,0],f11.coef_[0,0],f12.coef_[0,0],f13.coef_[0,0],f14.coef_[0,0],f15.coef_[0,0],f16.coef_[0,0],f17.coef_[0,0],f18.coef_[0,0],f19.coef_[0,0],f20.coef_[0,0],f21.coef_[0,0],f22.coef_[0,0],f23.coef_[0,0],f24.coef_[0,0],f25.coef_[0,0],f26.coef_[0,0]]),columns=['Coef'])
d1=pd.DataFrame(data=np.array([f0.intercept_[0],f1.intercept_[0],f2.intercept_[0],f3.intercept_[0],f4.intercept_[0],f5.intercept_[0],f6.intercept_[0],f7.intercept_[0],f8.intercept_[0],f9.intercept_[0],f10.intercept_[0],f11.intercept_[0],f12.intercept_[0],f13.intercept_[0],f14.intercept_[0],f15.intercept_[0],f16.intercept_[0],f17.intercept_[0],f18.intercept_[0],f19.intercept_[0],f20.intercept_[0],f21.intercept_[0],f22.intercept_[0],f23.intercept_[0],f24.intercept_[0],f25.intercept_[0],f26.intercept_[0]]))
df1['Intercept'] = d1.loc[:,0].values


df1['Predicted Billing'] = df1.apply(lambda row: row.Coef*row.Demand + row.Intercept, axis=1)
df2=df1.groupby(['Customer Request Date Year Id','Customer Request Date Quarter Id'],as_index=False)['Predicted Billing'].sum()

import pyodbc
server = 'Server'
database = 'DBNAme'
username = 'USer'
password = 'Pwd'
cnxn1 = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn1.cursor()
for index,row in df1.iterrows():
    cursor.execute("INSERT INTO [FVM].[FinancialForecast1]([Fiscal_Year],[Fiscal_Week],[Weekdiff],[Customer Request Date Year Id],[Customer Request Date Quarter Id],[Customer Request Date Week Id],[Demand],[Coef],[Intercept],[Predicted Billing]) values (?, ?,?,?,?,?,?,?,?,?)", row['Fiscal_Year'], row['Fiscal_Week'] , row['Weekdiff'], row['Customer Request Date Year Id'], row['Customer Request Date Quarter Id'], row['Customer Request Date Week Id'], row['Demand'], row['Coef'], row['Intercept'], row['Predicted Billing']) 
    cnxn1.commit()
cursor.close()
cnxn1.close()

我曾尝试更新计算机中的Powershell版本,但在计划时仍然无法正常工作。

0 个答案:

没有答案