Я пытаюсь предоставить файл .csv в своем веб-интерфейсе cherrypy, но получаю ошибку длины содержимого: запрошенный ресурс возвратил больше байтов, чем объявленная длина содержимого.
Я новичок в cherrypy и разработке веб-интерфейса, поэтому я не уверен, в чем проблема, если мой csv пуст, файл загрузится, но если в нем есть какая-либо информация, возникает ошибка. Ниже мой код. В основном я запрашиваю базу данных и хочу отправить результаты запроса в формате csv пользователю
класс Root (объект):
def index(self, *args, **kwargs):
return "index.html"
index.exposed = True
@cherrypy.expose
Запрос 1
def query(self, subject, grade,number,semester,year):
db = MySQLdb.connect("localhost", "root", "xxx", "xxx")
cursor = db.cursor()
query="""SELECT GRADE.STUDENTID,GRADE.COURSECRN,GRADE.FINALGRADE,SEMESTER.SEMESTER,SEMESTER.YEAR FROM GRADE JOIN SEMESTER ON GRADE.COURSECRN=SEMESTER.CRN JOIN COURSE ON COURSE.CRN =SEMESTER.CRN WHERE (COURSE.SUBJECT='%s' AND COURSE.NUMBER='%s' AND SEMESTER.SEMESTER='%s' AND SEMESTER.YEAR='%s') AND (GRADE.FINALGRADE='%s') """%(subject,number,semester,year,grade)
print('Enter query 1')
values=(subject,number,semester,year,grade)
print(values)
# grade = "\'"+ grade + "\'"
print(subject,number,semester,year,grade)
cursor.execute(query)
#cursor.execute("select * from GRADE where FINALGRADE=%s;")
row = cursor.fetchone()
res = []
#while row is not None:
c=csv.writer(open("output.csv","w"))
for row in cursor:
res.append(row)
row = cursor.fetchone()
c.writerow(row)
json.dumps(row,indent=4)
print(res)
return cherrypy.lib.static.serve_file('/home/amichale/interface/output.csv','application/x-download','attachment')