2016-04-21 14 views
0

MAのハイキングコースのリストを使ってWebアプリケーション(mySQLとPythonを使用)を作成しようとしています。私はちょうど1つのページに私のDBにトレイルのすべての名前を表示したいと何も表示されません理由を把握することはできません。私は、Webアプリケーションで作業しようとすると、<type 'exceptions.NameError'>

################################################################################ 
def getAllHikes(): 
""" 
This is a middleware function to read from the database. 
It returns a list containing records of all trails we have in the table. 
""" 

# connect to db 
conn, cursor = getConnectionAndCursor() 

# prepare SQL 
sql = """ 
SELECT name 
FROM hiking 
""" 

# run the SQL 
cursor.execute(sql) 

# fetch the results 
data = cursor.fetchall() 

# clean up 
cursor.close() 
conn.close() 

return data 

################################################################################ 
def showAllHikes(data): 
'''Produce a table showing all trails, one per row.''' 

print(''' 
Here are all the popular trails we have on file: 
<table> 
    <tr> 
     <td>%s</td> 
     <td>%s</td> 
     <td>%s</td> 
     <td>%s</td> 
     <td>%s</td> 
    </tr> 
     ''') % (name, town) 

print(''' 
</table> 
''') 
################################################################################ 
if __name__ == "__main__": 

# get form field data 
form = cgi.FieldStorage() 

doHTMLHead("MassHike: A database of popular Massachusetts trails") 

data = getAllHikes() 
showAllHikes(data) 


doHTMLTail() 

私はいつもこの問題が発生しました。 args =( "グローバル名 'name'が定義されていません。)

非常に簡単に説明することができれば幸いです。私はこれを全く理解していません。ありがとう!

+0

あなたのエラーは何行ですか?それはあなたのSQLクエリの結果ですか? – mprat

答えて

0

問題は次のとおりです。関数内またはglobalレベルで定義されているnameまたはtownはありません。あなたはMySQL fetchallに応じlisttupleのであるように思わdataを通過する必要がありますこの情報を取得するために

def showAllHikes(data): 
    '''Produce a table showing all trails, one per row.''' 

    print(''' 
    Here are all the popular trails we have on file: 
    <table> 
     <tr> 
      <td>%s</td> 
      <td>%s</td> 
      <td>%s</td> 
      <td>%s</td> 
      <td>%s</td> 
     </tr> 
      ''') % (name, town) 

    print(''' 
    </table> 
    ''') 

。私たちは、次の操作を行うことができ、この情報を使用して

:それは現在唯一sql = """SELECT name FROM hiking"""であるとして、あなたのSQLクエリは、町の情報を含める必要があるので、これを超える可能性が高いと失敗するよう

print(''' 
    Here are all the popular trails we have on file: 
    <table>''') 
for name, town in data: 
    print(''' 
     <tr> 
      <td>%s</td> 
      <td>%s</td> 
     </tr> 
      ''') % (name, town) 

print(''' 
    </table> 
    ''') 

はしかし、それが見えます:

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
ValueError: need more than 1 value to unpack 
関連する問題