2012-07-03 40 views
0

可能相關的話題,但我從中也不能解決問題:How to initialize global variables in TurboGears 2 with values from a table如何在turbogears2的app_globals.py中使用數據庫?

的問題是,我試圖從數據庫中讀取在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語句永遠不會執行(崩潰發生在之前)。

有沒有人有任何指示從哪裏去?

在此先感謝。

回答

1

您可以使用after_config hook來調用app_globals中的設置方法,該方法獲取數據庫並檢索自己需要設置的數據。

after_config hooks實際上是在完整的渦輪增壓器應用程序配置完成後調用的,因此您將同時創建app_globals和數據庫並進行配置。您可以使用config['tg.app_globals']config['pylons.app_globals']從鉤子訪問app_globals,具體取決於您使用的是哪個TG版本。

請注意,after_config掛鉤必須返回turbogears應用程序本身,所以只需返回您獲取的參數即可。

相關問題