Подключаться к базе данных только при необходимости - PullRequest
1 голос
/ 06 февраля 2010

Я использую Pylons + Python и пытаюсь понять, как подключаться к нашему центральному серверу баз данных только при необходимости.

Я создал класс с именем Central (), который я хотел бы создавать всякий раз, когда необходимо подключение к центральному серверу базы данных, например ::100100

class Central():

def __init__(self):

    engine = engine_from_config(config, 'sqlalchemy.central.')     
    central_db = create_engine(engine)

    print central_db

Однако это не работает, когда я звоню:

c = DBConnect.Central()

Какой код подходит для этого?

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

Так как я не могу сказать, как устроен ваш код, я могу только предположить, что у вас есть engine и central_db, определенные где-то в глобальном контексте. Это верно? Если это так, вы можете попробовать что-то вроде этого:

def __init__(self):
    global engine
    global central_db
    engine = engine_from_config(config, 'sqlalchemy.central.')     
    central_db = create_engine(engine)

Он будет ссылаться на глобальные engine и central_db объекты вместо локальных (как описано Wim )

0 голосов
/ 06 февраля 2010

Можете ли вы определить "не работает"?

Если вы хотите использовать central_db и engine позже, вам нужно сохранить их в объекте (используйте self.central_db, self.engine, позже вы можете получить к ним доступ как c.central_db и c.engine). Теперь это просто локальные переменные, которые уничтожаются после завершения работы вашего конструктора.

...