2012-05-28 21 views
0

以下是python服務器頁面(PSP)的代碼;使用mysqldb,我試圖從表中獲取記錄「addr」,然後將其打印到HTML頁面上。打印聲明在PSP(Python服務器頁面)中不起作用

但由於某些原因,for循環(包含錶行)內部和for循環外部(包含「Hello」語句)的print語句不工作,因此在代碼執行後最後只有語句「Rows打印「顯示,沒有別的。

<% import MySQLdb 

conn = MySQLdb.Connect(host='localhost',user='user',passwd='password',db='db1') 
cur = conn.cursor() 
sql= "SELECT * from addr;" 
try: 
    cur.execute(sql) 
    data = cur.fetchall() 
    for row in data: 
    print row[1] 
    print("Hello") 
    cur.close() 
    conn.close() 
%> 
<br /> 
<html> 
<h1> Rows Printed</h1> 
</body> 
</html> 
<% 
except MySQLdb.IntegrityError,message: 
    errorcode = message[0] 
%> 
<html> 
<body><h1> Technical issue</h1> 
</body> 
</html> 

print語句犯規時運行的Python腳本工作正常,並提供存儲在表中所需的記錄,即使沒有try catch塊顯示結果,但相同的。

回答

0

我不能理解爲什麼你想使用Python服務器頁面,但既然你是,你顯然不能使用print。您需要實際輸出結果到PSP語法的頁面。喜歡的東西:

for row in data: %> 
<br><%= row[1] =%> 
<% 
cur.close() 

+0

感謝輸入丹尼爾;它工作得很好。但從你的文章另一個疑問出現在我心中,即是否建議使用python服務器頁面來構建網站?從我在互聯網上的研究中,我發現它比CGI處理程序更快,但如果我錯過了使用PSP的任何缺點或缺點,請求您指出它。再次感謝!!! –

+0

PSP基於mod_python,它並未處於活動開發之中,因此不推薦使用。而PSP通常不是一個非常好的技術 - 它混合了業務邏輯和顯示,使開發和維護變得困難。在WSGI之上使用像Django或Flask這樣的框架 - 除了正確分離關注點和體面的模板語言之外,像Django一樣還包括一個db層,它避免了編寫SQL語句的需要。 –