我正在使用Pylons + Python,并试图了解如何在必要时如何连接到我们的中央数据库服务器。
我创建了一个名为Central()的类,每当需要连接到中央数据库服务器时,我想要实例化它,例如:
class Central():
def __init__(self):
engine = engine_from_config(config, 'sqlalchemy.central.')
central_db = create_engine(engine)
print central_db
但是,当我打电话时,这不起作用:
c = DBConnect.Central()
这样做的正确代码是什么?
感谢。
答案 0 :(得分:1)
由于我无法分辨代码的布局,我只能假设您已在全局上下文中的某处定义了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 所描述的那样)
答案 1 :(得分:0)
你能定义“不起作用”吗?
如果您想稍后使用central_db
和engine
,则需要将它们存储在对象中(使用self.central_db
,self.engine
,稍后您可以将其作为{ {1}}和c.central_db
)。现在它们只是局部变量,一旦你的构造函数完成就会被破坏。