2013-03-14 57 views
2
def websvc(currency): 
    db = MySQLdb.connect("localhost", "root", "aqw", "PFE_Project") 
    cursor = db.cursor() 
    sql = "SELECT * FROM myform_composantsserveur" 

    try: 
     cursor.execute(sql) 
     results = cursor.fetchall() 
     currency_in = currency 
     req = urllib2.urlopen('http://rate-exchange.appspot.com/currency?from=USD&to=%s') % (currency_in) 
     req1 = req.read() 
     rate = int(req1['rate']) 
     # rate = 0.77112893299999996 

     servers = [] 
     for row in results: 
      result = {} 
      result['1'] = row[1] 
      result['3'] = int(row[2]) 
      result['4'] = int(row[3]) 
      result['5'] = int(row[4]) 
      result['6'] = row[5] 
      result['7'] = int(row[6]) 
      result['8'] = row[7] 
      result['9'] = row[8] 
      p = rate * calculations_metric (int(row[2]), int(row[3]), int(row[4]), int(row[6]), row[7]) 
      result['2'] = p 
      keys = result.keys() 
      keys.sort() 
      servers.append(result) 

    except: 
     print "Error: unable to fetch data" 
    db.close() 
    return servers 

之前引用但我有這個錯誤而編譯代碼:局部變量「服務器的分配

異常類型:UnboundLocalError

異常值:賦值之前引用局部變量 「服務器」

異常位置:/ home/amine/PFE目錄/ mysite1/myform/webservice.py in websvc,第43行Python可執行文件:/usr/bin/python2.7

這個代碼正常工作之前,我在此功能

+1

什麼線是錯誤的? – interjay 2013-03-14 09:40:39

+0

添加完整的錯誤以及FUNC代碼與該錯誤 – 2013-03-14 09:42:29

+0

鐳石光電線「返回服務器」中提到 – Imoum 2013-03-14 09:44:10

回答

2

您的代碼不能添加參數來達到服務器的初始化,這就是爲什麼你得到錯誤。只需在try..except之前移動初始化即可。改變這種方式:

def websvc(currency): 
    db = MySQLdb.connect("localhost", "root", "aqw", "PFE_Project") 
    cursor = db.cursor() 
    sql = "SELECT * FROM myform_composantsserveur" 
    servers = [] 

    try: 
     cursor.execute(sql) 
     results = cursor.fetchall() 
     currency_in = currency 
     req = urllib2.urlopen('http://rate-exchange.appspot.com/currency?from=USD&to=%s') % (currency_in) 
     req1 = req.read() 
     rate = int(req1['rate']) 
     # rate = 0.77112893299999996 

     for row in results: 
      result = {} 
      result['1'] = row[1] 
      result['3'] = int(row[2]) 
      result['4'] = int(row[3]) 
      result['5'] = int(row[4]) 
      result['6'] = row[5] 
      result['7'] = int(row[6]) 
      result['8'] = row[7] 
      result['9'] = row[8] 
      p = rate * calculations_metric (int(row[2]), int(row[3]), int(row[4]), int(row[6]), row[7]) 
      result['2'] = p 
      keys = result.keys() 
      keys.sort() 
      servers.append(result) 

    except: 
     print "Error: unable to fetch data" 
    db.close() 
    return servers 
0

我看到了問題,現在你已經編輯它添加缺少的部分。這是異常處理程序。

如果在try之後和servers=[]之前有錯誤,它將跳轉到except子句,然後看到return servers並失敗。

您可能需要使用list(),而是採用了dict()來模擬列表...