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