2012-07-03 6 views
0

아마도 관련 항목을하지만,있는 나는 문제를 해결할 수 : How to initialize global variables in TurboGears 2 with values from a tableturbogears2의 app_globals.py에서 데이터베이스를 사용하는 방법은 무엇입니까?

문제는 내가 Turbogears에 app_globals.py에서 전역 변수의 일부를 초기화 데이터베이스에서 일부 구성 매개 변수를 읽으려고한다는 것입니다 .

그러나 데이터베이스에 액세스를 시도

, 나는 예외가 나타납니다 :

이 때문에 아직 구속된다 (전역 매개 변수를 먼저 설정)이 아닌 DB에 아마도 그냥 예외 상태로
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 후크는 실제로 turbogears 응용 프로그램 전체가 구성된 후에 호출되므로 app_globals와 데이터베이스가 모두 구성되고 구성됩니다. 사용중인 TG 버전에 따라 config['tg.app_globals'] 또는 config['pylons.app_globals']을 사용하여 hook에서 app_globals에 액세스 할 수 있습니다.

after_config 후크는 turbogears 응용 프로그램 자체를 반환해야하므로주의해서 매개 변수를 반환하십시오.