2009-04-16 4 views
1

У меня есть немного Python для подключения к базе данных с переключением в локальном или в реальном времени.Как это «упоминается перед назначением»?

LOCAL_CONNECTION = {"server": "127.0.0.1", "user": "root", "password": "", "database": "testing"} 
    LIVE_CONNECTION = {"server": "10.1.1.1", "user": "x", "password": "y", "database": "nottesting"} 

    if debug_mode: 
     connection_info = LOCAL_CONNECTION 
    else: 
     connnection_info = LIVE_CONNECTION 
    self.connection = MySQLdb.connect(host = connection_info["server"], user = connection_info["user"], passwd = connection_info["password"], db = connection_info["database"]) 

работает отлично локально (Windows, Python 2.5), но жить (Linux, Python 2.4) Я получаю:

UnboundLocalError: local variable 'connection_info' referenced before assignment 

я вижу ту же ошибку, даже если я удалить, если/еще и просто назначьте информацию о подключении непосредственно к значению LIVE_CONNECTION. Если я жестко закодирую значения живого соединения в последней строке, все это сработает. Ясно, что я сон. Что я не вижу?

ответ

16

Второе присвоение - орфографическое.

Вы написали connnection_info = LIVE_CONNECTION с 3 n.

+0

3 n's are not see! –

+0

Да! Даже когда я увидел, что '=' не выстраивался в линию, мне потребовалось третье сканирование, чтобы найти лишнее n. В любом случае, надеюсь, следующий вопрос Тома не о статическом печатании :) –

+0

Вау, я юцц. Вы могли бы подумать, что пробел Python сделал бы это очевидным для меня, когда это = не выстраивалось в линию. Спасибо всем. – Tom

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