0

可能相关的主题,但我无法解决问题:如何使用表中的值初始化 TurboGears 2 中的全局变量

问题是,在 Turbogears 中初始化 app_globals.py 中的一些全局变量时,我试图从数据库中读取一些配置参数。

但是,当尝试访问数据库时,我收到一个异常:

sqlalchemy.exc.UnboundExecutionError: Could not locate a bind configured on mapper Mapper|Config|config_table, SQL expression or this Session

正如异常所述,这可能是由于尚未绑定数据库(首先设置全局参数)。从另一个主题中,我被指出在初始化全局变量之前转到 app_cfg.py 并使用“on_startup”绑定数据库,但这对我不起作用。要么我做得不对,要么这不是问题的解决方案。例如,我试着写:

def on_startup():
    print "Foo bar!!!"

base_config.register_hook('startup', on_startup)

但是 print 语句永远不会执行(崩溃发生在之前)。

有人对从这里去哪里有任何指示吗?

提前致谢。

4

1 回答 1

1

您可以使用after_config 挂钩在 app_globals中调用 setup 方法,该方法会进入数据库并检索设置自身所需的数据。

after_config hooks 实际上是在配置完整的 turbogears 应用程序后调用的,因此您将同时构建和配置 app_globals 和数据库。config['tg.app_globals']您可以使用或config['pylons.app_globals']取决于您使用的 TG 版本从挂钩中访问 app_globals 。

注意 after_config 钩子必须返回 turbogears 应用程序本身,所以只返回你得到的参数。

于 2012-07-10T08:50:38.337 回答