当前位置: 首页 > 面试题库 >

分配前引用的本地变量“服务器”

荆炳
2023-03-14
问题内容
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目录/ websvc中的mysite1 / myform /
Webservice.py,第43行Python可执行文件:/usr/bin/python2.7

我在此函数中添加参数之前,此代码正常工作


问题答案:

您的代码无法到达服务器初始化,这就是为什么会出错。只需在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


 类似资料:
  • 问题内容: 我想知道你们是否可以提供帮助。我试图做一个简单的视图,它将用户发送到客户端创建表单,但是我一直收到此错误: 赋值之前引用的局部变量“ form” 查看我的代码,看不到有什么问题。 有人告诉我我哪里出问题了吗? 问题答案: 这是正在发生的事情: 没有输入该块。 变量未定义。 然后,你尝试在语句中引用变量。 至于解决方法,这确实是你要决定的。解决的方法取决于你希望代码执行的操作(如果请求方

  • 问题内容: 这个问题已经在这里有了答案 : 从父函数分配给变量:“分配前引用的局部变量” [重复] (5个答案) Python 3:UnboundLocalError:分配前被引用的局部变量[重复] (5个答案) 10个月前关闭。 我收到以下错误: UnboundLocalError:分配前已引用局部变量“ test1”。 错误说那是局部变量,但我认为这个变量是全局变量 那么它是全局的还是局部的,

  • 问题内容: 以下代码给出了错误 我怎样才能解决这个问题?谢谢你的帮助! 问题答案: 你可以通过传递参数而不是依赖全局变量来解决此问题

  • 问题内容: 认为我在这里疯了。 给我UnboundLocalError。我在这里错过了什么重要概念? 问题答案: 您正在分配一个全局变量,这意味着您需要将其 标记 为全局变量: 当您在局部范围内分配变量时,除非您先使用一条语句告诉python,否则将假定它是局部变量。

  • 问题内容: 以下代码引发UnboundLocalError: 错误: 我不知道为什么。有人能指出我正确的方向吗? 问题答案: 如果conn.cursor()引发异常,则将永远不会分配cur,因此,finally块中的代码将在分配之前引用cur。 尝试删除该try块并查看会发生什么,很可能conn.cursor()抛出了某种异常,您需要对它进行梳理。

  • 假设我的OpenAPI定义有两个服务器。两者共享相同的变量。因此,我想引用这些变量来防止重复代码。 是否可以引用服务器变量或以另一种方式重用它们? 当然,我可以运行,但我不想使用它。