2014-10-22 52 views
1

下面的代码之前引用局部变量 '小人' 抛出UnboundLocalError:UnboundLocalError:分配

def fetch_results(conn, sql, **bind_params): 
    """ 
    Immediately fetches the SQL results into memory 
    Trades memory for the ability to immediately execute another query 
    """ 
    global _log_func 
    try: 
     cur = conn.cursor() 
     if _log_func: 
      _log_func(cur, sql, bind_params) 

     cur.execute(sql, bind_params) 
     return cur.fetchall() 
    finally: 
     cur.close() 

错误:

line 75, in fetch_results 
    cur.close() 
UnboundLocalError: local variable 'cur' referenced before assignment 

我不知道为什么。有人能指出我正确的方向吗?

+0

在哪一行是错误? – 2014-10-22 00:43:33

+0

错误发生在cur.close() – Istvan 2014-10-22 00:46:21

回答

6

如果conn.cursor()抛出异常,cur永远不会被赋值,因此finally块中的代码将在赋值之前引用cur。

尝试移除该try块并查看会发生什么,可能是conn.cursor()抛出某种需要排除的异常。

+0

谢谢,情况正是如此。 – Istvan 2014-10-22 01:01:37

相关问题