2010-11-03 38 views
0

我在學習如何使用Python創建動態網頁內容。但問題是,當我嘗試執行mySQL查詢時,絕對沒有任何反應。沒有錯誤信息......當我導入啓用連接到數據庫的模塊時,它看起來像腳本停止運行。用Python編寫網頁的服務器端腳本:沒有任何反應

當我嘗試從命令行運行它時,這確實如我所料。

#!/usr/bin/python 
print "Content-Type: text/xml" 
print 

#if I type, for example, print "<b>test</b>" here, it appears in the browser window 

#msql contains the credentials for connecting to database 
#it is NOT in public_html 
import msql 

#no print instructions after this point are followed 

connex=msql.msqlConn() 
db=msql.MySQLdb 
cursor=connex.cursor(db.cursors.DictCursor) 

cursor.execute("SELECT * FROM userActions") 
#run the query 

xmlOutput="" 

rows=cursor.fetchall() 
#output the results 
for row in rows: 
    xmlOutput+="<action>" 
    xmlOutput+="<actionId>"+str(row["actionId"])+"</actionId>" 
    xmlOutput+="<userId>"+str(row["userId"])+"</userId>" 
    xmlOutput+="<actText>"+str(row["action"])+"</actText>" 
    xmlOutput+="<date>"+str(row["dateStamp"])+"</date>" 
    xmlOutput+="</action>" 

xmlOutput="<list>"+xmlOutput+"</list>" 
print xmlOutput 

這將是我第一次刺穿此,所以它只是有理由認爲這應該工作。儘管如此,我沒有發現任何網絡上會有其他建議。

+0

通過字符串連接構建XML(或HTML)聽起來像是一個非常糟糕的主意...... – delnan 2010-11-03 20:06:30

+0

這是什麼庫? mSQL的?從來沒有聽說過。 – 2010-11-03 20:12:40

+0

當你從命令行運行它時會發生什麼?我的猜測是,你的腳本在某個時候出現了一個錯誤,並且這個錯誤被髮送到標準錯誤,所以你沒有在瀏覽器中看到它。暫時添加'import sys; sys.stderr = sys.stdout'會導致任何錯誤消息去瀏覽器。 – kindall 2010-11-03 20:26:58

回答

1

請花24小時學習Django。 Django有一個ORM和一個XML序列化器,這將使您的生活更輕鬆,以確保正確的(和合法的)xml,它確實付出了代價。

+0

好的,看看到Django和pyodbc,至少。問題的結果是,當通過瀏覽器運行msql模塊時(儘管通過命令行運行時),msql模塊沒有找到。 msql包含樣板登錄代碼(在證書不公開顯示的地方),然後使用MySQLdb庫。 – user473759 2010-11-09 15:46:49

0

您可以啓用CGI回溯,看看會發生什麼:

import cgitb 
cgitb.enable() 

(我不認爲它會導致你的問題,和客戶瞭解\n以及,但它是更好地使用sys.write("...\r\n")而不是print打印HTTP標頭)

編輯:嘗試將Content-length: XXXX\r\n添加到標頭。

相關問題