【问题标题】:Creating a global function, accessible from all classes, with Python + Pylons使用 Python + Pylons 创建一个可从所有类访问的全局函数
【发布时间】:2010-03-02 01:09:33
【问题描述】:

使用 pylons 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

我必须做任何特殊的导入吗?有没有更好的方法来做到这一点?

谢谢。

【问题讨论】:

    标签: python pylons


    【解决方案1】:
    from model import connectCentral
    

    【讨论】:

      【解决方案2】:

      你完成了import init 吗?或者更确切地说是from init import connectCentral

      如果你这样做了,那么应该定义这样的名称。如果没有,你可以尝试在方法体中写global connectCentral,但我相信它只是为了使用全局变量。

      您确定,这个模块的名称应该是 init.py 而不是 __init__.py?您能否发布更多代码,您尝试在哪里使用您的功能?

      编辑

      所以你有__init__.py,很好。你在导入from model import connectCentral吗?你没有任何循环导入(比如从__init__.py 导入class.py 和从class.py 导入__init__.py)?

      【讨论】:

      • 嗨——我正在尝试在一个名为 model/user.py 的类中使用我的函数。我相信 init.py 是正确的,因为这是 pylons 创建默认模板的方式。当我导入 init. 时它可以工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多