以下代码抛出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 :(得分:6)
如果conn.cursor()抛出异常,则永远不会分配cur,因此finally块中的代码将在赋值之前引用cur。
尝试删除该try块并查看发生的情况,conn.cursor()可能会抛出您需要解决的某种异常。