2012-05-28 10 views
0

다음은 PSP (Python Server Pages) 코드입니다. mysqldb를 사용하여 "addr"테이블에서 레코드를 가져 와서 같은 페이지를 html 페이지로 출력하려고합니다.Print 문이 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> 

인쇄 문

같은 심지어 시도의 catch 블록하지 않고 결과를 표시 할 수 있지만 나던.

답변

0

필자는 왜 파이썬 서버 페이지를 사용하고 싶은지 이해할 수 없지만 실제로는 print을 사용할 수 없습니다. 실제로 결과를 PSP 구문으로 페이지에 출력해야합니다. 뭔가 같은 : 입력 다니엘에 대한

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

+0

감사합니다; 그것은 아주 잘 작동했습니다. 하지만 귀하의 게시물에서 또 다른 의심은 내 마음에 떠오르다. 즉, 웹 사이트를 구축하기위한 파이썬 서버 페이지의 사용이 권장되지 않습니까? 인터넷에서의 연구 결과 CGI 처리기보다 훨씬 빠르다는 것을 알았지 만 PSP 사용의 단점이나 단점을 놓치고 있다면 친절하게도 지적 해주십시오. 다시 한 번 감사드립니다! –

+0

PSP는 mod_python을 기반으로합니다. mod_python은 현재 개발 중이며 더 이상 사용되지 않습니다. 그리고 PSP는 일반적으로 비즈니스 로직과 디스플레이를 혼합하여 개발과 유지 보수를 어렵게 만드는 매우 훌륭한 기술은 아닙니다. WSGI 위에 장고 (Django) 나 플라스크 (Flask)와 같은 프레임 워크를 사용하십시오. 적절한 구분과 적절한 템플릿 언어를 제외하고 Django는 SQL 문 작성의 필요성을 피하는 db 계층을 포함합니다. –

관련 문제