Создание глобальной функции, доступной из всех классов, с помощью Python + Pylons - PullRequest
0 голосов
/ 01 марта 2010

Используя пилоны 0.9.7, я пытаюсь создать функцию, которая подключается к базе данных по требованию.Мне бы хотелось, чтобы он был доступен из всех функций всех классов моделей.

В 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

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 марта 2010
from model import connectCentral
1 голос
/ 01 марта 2010

Вы сделали 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)?

...