2010-03-01 1 views
0

Использование pylons 0.9.7, я пытаюсь создать функцию, которая подключается к базе данных по требованию. Я бы хотел, чтобы он был доступен из всех функций во всех классах моделей.Создание глобальной функции, доступной из всех классов, с помощью Python + Pylons

В model/__init__.py, у меня есть:

#Establish an on-demand connection to the central database 
def connectCentral(): 
    engine = engine_from_config(config, 'sqlalchemy.central.') 
    central.engine = engine 
    central.Session.configure(bind=engine) 

Эта функция доступна везде. Однако, когда я пытаюсь запустить его в пределах класса, указанного в model/class.py, он возвращает:

NameError: global name 'connectCentral' is not defined 

Должен ли я делать какие-либо специального импорта? Есть лучший способ сделать это?

Спасибо.

ответ

1

Вы сделали import init? Вернее, from init import connectCentral?

Если вы это сделали, то такое имя должно быть определено. Если нет, вы можете попробовать написать global connectCentral в теле метода, но я считаю, что он предназначен только для использования глобальных переменных.

Вы уверены, эти модули предполагается иметь имя init.py, а не __init__.py? Не могли бы вы разместить еще какой-нибудь код, где вы пытаетесь использовать свою функцию?

EDIT

Таким образом, вы имеете __init__.py, хорошо. Вы делаете импорт from model import connectCentral? У вас нет импортных оборотов (например, импорт от __init__.py в class.py и импорт от class.py в __init__.py)?

+0

Hi - Я пытаюсь использовать свою функцию в классе под названием model/user.py. Я верю, что __init__.py правильно, так как пилоны создали шаблон по умолчанию. Он работает, когда я импортирую __init__. – ensnare

+0

Не могли бы вы разместить код с user.py и init.py? – gruszczy

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