通过浏览器在web服务器上运行python脚本并获取csv输出给用户machin

2024-04-25 21:36:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python和javascript的基本知识还不熟悉编程。我需要以下方面的帮助。你知道吗

我在web服务器上有一个python脚本。脚本输出一个“.csv”文件。(请在下面找到脚本)

任何通过链接访问web服务器的用户都需要在web服务器中触发python脚本。一旦在web服务器中生成了csv文件,用户就可以单击链接中的按钮在其本地计算机中下载csv文件。这将在内部网中使用。你知道吗

问题:我已经设置了一个apacheweb服务器。但是我也不能在web服务器上从浏览器运行python脚本。请帮忙。你知道吗

Apache日志:[2016年11月5日星期六01:14:23.341480][cgi:错误][pid 9572:tid 936](9)错误的文件描述符:[client 127.0.0.1:49729]AH01222:不知道如何生成子进程:C:/Users/dasa17/mywebsite/花名册.py你知道吗

独立的python脚本运行良好,提供了所需的输出。请找到下面的脚本:

import os
import csv
import pymysql
import pymysql.cursors
from datetime import date
import calendar
d=date.today()
num_days = calendar.monthrange(d.year,d.month)[1]
days = [(d.year,d.month,day) for day in range(1, num_days+1)]
dayssl=["%s-%s-%s" %z for z in days] #Create a list of strings  for the  CSV    output header
IT = pymysql.connect(host='xxxxxxx', user='xxxxx', password='xxxx',
         db='xxxx')#Connect  to the IT database
Others = pymysql.connect(host='xxxxx', user='xxxx',     password='xxxx',
         db='xxxx')#Connect to the non IT database
a=IT.cursor() # Open Cursor for IT  database
b=Others.cursor()#Open Cursor for non-IT  database
#  Create a string to query the IT database
u='''select e.mgrntid,
(case when e.verticalorg = 27 then 'HR'
      when e.verticalorg = 2 then 'IT'
      when e.verticalorg = 30 then 'GBS'
      when e.verticalorg = 4 then 'GBS - Technical'
      when e.verticalorg = 5 then 'DPAS'
      when e.verticalorg = 6 then 'VIPR'
      when e.verticalorg = 6 then 'VMAX'
      when e.verticalorg = 6 then 'ASD+ SRM'
      when e.verticalorg = 6 then 'VNX'
        end) as verticalorg,s.employee_id,
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)     THEN s.forecasted_shift ELSE NULL END) AS '2016-10-01',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-02') as DATE)    THEN s.forecasted_shift ELSE NULL END) AS '2016-10-02',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-03') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-03',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-04') as DATE)THEN s.forecasted_shift ELSE NULL END) AS '2016-10-04' ,
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-05') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-05',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-06') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-06',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-07') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-07',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-08') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-08',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-09') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-09',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-10') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-10',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-11') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-11',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-12') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-12',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-13') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-13',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-14') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-14',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-15') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-15',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-16') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-16',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-17') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-17',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-18') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-18',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-19') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-19',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-20') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-20',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-21') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-21',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-22') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-22',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-23') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-23',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-24') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-24',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-25') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-25',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-26') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-26',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-27') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-27',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-28') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-28',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-29') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-29',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-30') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-30',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-31') as DATE)  THEN s.forecasted_shift ELSE NULL END) AS '2016-10-31'
from shift_roster s LEFT JOIN tbl_employeedetails e on     s.employee_id=e.empntid where s.shift_date >= CAST(DATE_FORMAT(NOW() ,'%Y-%m-   01') as DATE) GROUP BY s.employee_id ORDER BY e.verticalorg'''
a.execute(u)#Execute  the query in the  database
#Create a string for non IT database
v='''select e.mgrntid,
(case when e.verticalorg = 18 then 'CS'
      when e.verticalorg = 19 then 'PS'
      when e.verticalorg = 25 then 'MS'
      when e.verticalorg = 26 then 'PE'
      when e.verticalorg = 27 then 'HR'
      when e.verticalorg = 28 then 'RSA'
        end) as verticalorg,s.employee_id,
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-01',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-02') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-02',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-03') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-03',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-04') as DATE)THEN s.forecasted_shift ELSE NULL END) AS '2016-10-04' ,
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-05') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-05',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-06') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-06',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-07') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-07',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-08') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-08',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-09') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-09',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-10') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-10',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-11') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-11',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-12') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-12',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-13') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-13',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-14') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-14',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-15') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-15',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-16') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-16',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-17') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-17',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-18') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-18',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-19') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-19',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-20') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-20',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-21') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-21',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-22') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-22',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-23') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-23',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-24') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-24',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-25') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-25',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-26') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-26',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-27') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-27',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-28') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-28',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-29') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-29',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-30') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-30',
   MAX(CASE WHEN s.shift_date=CAST(DATE_FORMAT(NOW() ,'%Y-%m-31') as DATE) THEN s.forecasted_shift ELSE NULL END) AS '2016-10-31'
from shift_roster s LEFT JOIN tbl_employeedetails e on     s.employee_id=e.empntid where s.shift_date >= CAST(DATE_FORMAT(NOW() ,'%Y-%m-   01') as DATE) GROUP BY s.employee_id ORDER BY e.verticalorg'''
b.execute(v) #Execute the query in the   non-IT  database
result_IT=a.fetchall() #Fetch all data from Curor for IT   database
result_Others=b.fetchall()#Fetch all data from Curor for non IT   database
Filename = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") +    "\\Desktop\RosterUnified.csv" # Create/write  a CSV file  in the  user's desktop
d=open(Filename, 'w',newline='\n') #Format for CSV  input
c = csv.writer(d)
c.writerow(["Manager NT ID"," Vertical Org","Employee ID" ]+ dayssl)# Write     the  header list of strings  in the  first row
for row in result_IT:
    c.writerow(row)#Write output for IT to csv
d.close()
e=open(Filename, 'a',newline='\n')

f= csv.writer(e)
for row in result_Others:
    f.writerow(row)# Append to the  existing  CSV file with non IT data 
e.close()#Close the  CSV  file


a.close()#Close IT cursor
b.close()#Close non IT cursor

Tags: formatdateshiftasnullelsenowmax