500(内部服务器错误)Python脚本和标题之前的脚本输出结束:

时间:2018-05-18 15:10:13

标签: python ajax

我浏览了关于这个主题的所有答案,但我没有找到任何解决我问题的方法。

Python脚本在本地python上是正确的,但是如果从具有ajax函数的html页面调用则不起作用

#!C:\ProgramData\Anaconda2\python.exe
# -*- coding: utf-8 -*-

import MySQLdb
import pandas as pd
import numpy as np
from random import randint
from sklearn.metrics.pairwise import cosine_similarity
from scipy import sparse
import cgitb
cgitb.enable()


db = MySQLdb.connect(host="localhost",
                     user="",
                     passwd="",
                     db="")

cur = db.cursor()

cur.execute("SELECT * FROM rs_users")

users=[]
for row in cur.fetchall():
    #print (row[0])
    users.append(row[0])

db.close()

AI_Follow=pd.DataFrame(columns=['id_u']+list(map(str,(users)))) 

AI_Follow.id_u=users




db = MySQLdb.connect(host="",
                     user="",
                     passwd="",
                     db="")

cur = db.cursor()

cur.execute("SELECT * FROM rs_userfollow")

for row in cur.fetchall():
    #print (str(row[0])+' '+str(row[1])+' '+str(row[2]))
    AI_Follow.iloc[int((row[1]-1)),int(row[2])]=1
    #raw_input("Press Enter to continue...")

db.close()



#CALCOLIAMO ORA LA MAGNITUDINE
#il ragionamento che si fa è quello di pesare ogni utente in funzione del numero di follow che fa. Se ne fa troppi
# deve pesare meno rispetto a chi ne fa di meno che significa che è più accorto a quello che fa

data=AI_Follow.drop('id_u',1)
magnitude=np.sqrt(np.square(data.sum(axis=1)))

data_items = data.divide(magnitude, axis='index')

#abbiamo creato la matrice di magnitudine

data_items=data_items.fillna(0)  #eliminiamo i Nan e sostituiamo con gli zero



#calcolimao la similarità tra user

similarities = cosine_similarity(data_items.transpose())
sim = pd.DataFrame(data=similarities, index= data_items.columns, columns= data_items.columns)
data_matrix = sim

#------------------------------------------------------------------
db = MySQLdb.connect(host="",
                     user="",
                     passwd="",
                     db="")

cur = db.cursor()
query=('DELETE from rs_recom')
cur.execute(query)
db.commit()


for user in AI_Follow.id_u:
    #user = 1 # L'id dell'utente per il quale vogliamo generare la raccomandazione
    ## qui è da iniziare il ciclo for per creare la tabella di tutti gli utenti con i relativi preferred
    user_index = AI_Follow[AI_Follow.id_u == user].index.tolist()[0]  # ottiene l'indice dell'utente
    # Prendiamo le persone che l'utente ha seguito.
    known_user_likes = data_items.iloc[user_index]
    known_user_likes = known_user_likes[known_user_likes >0].index.values
    # creiamo un vettore con i following normalizzati (o rating)
    user_rating_vector = data_items.iloc[user_index]

    # Calcoliamo lo Score
    score = data_matrix.dot(user_rating_vector).div(data_matrix.sum(axis=1))

    # Rimuoviamo i like conosciuti dalla recommendation.
    score = score.drop(known_user_likes)
    suggested_user=score.nlargest(10)

    for item in range(len(suggested_user)):
        query=('insert into rs_recom (id_user, id_recom) values ("%s", "%s")' % (user, suggested_user.index[item]))
        cur.execute(query)

db.commit()
db.close()

当我点击php页面上的Run按钮时,服务器会给我这个错误:

End of script output before headers: 

但我无法找到问题所在。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您将其作为CGI运行,则首先需要将其发送回浏览器的是Content-type标头。如果您在此之前发送任何内容,则会导致此错误。

尝试在输出任何其他内容之前将其添加到文件顶部附近:

print("Content-type: text/html\n")

编辑:添加了\ n