2013-03-14 99 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()来模拟列表...