2014-10-22 5 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

На какой строке является ошибка? –

+0

Ошибка в cur.close() – Istvan

ответ

6

Если conn.cursor() выбрасывает исключение, cur никогда не будет назначен, поэтому код в блоке finally будет ссылаться на cur перед назначением.

Попробуйте удалить этот блок try и посмотреть, что произойдет, вероятно, что conn.cursor() выбрасывает какое-то исключение, которое вам нужно будет разобраться.

+0

Спасибо, это именно так. – Istvan

Смежные вопросы