2008-09-30 4 views
0

turbogears와 sqlalchemy를 사용하여 앱을 개발하려고합니다. 동일한 서버의 mod_wsgi에서 kinterbasdb를 직접 사용하는 기존 앱이 이미 있습니다. 두 응용 프로그램을 모두 사용하면 kinterbasdb가 이미 초기화 된 것으로 인식되지 않는 것 같습니다 별도의 응용 프로그램에서 sqlalchemy 및 kinterbasdb를 사용하는 것에 대해 분명한 내용이 있습니까? kinterbasdb의 한 인스턴스 만 초기화되고 두 응용 프로그램 모두 해당 인스턴스를 사용하도록하기 위해 누구나 제안 사항이 있습니까? 나는 이미 내 솔루션을 게시 생각SQLAlchemy와 kinterbasdb가 mod_wsgi하에 별도의 앱에 있음

답변

1

...

자신의 아파치의 conf 파일 에 WSGIApplicationGroup $ {GLOBAL}에서 실행하는 두 응용 프로그램을 수정하고 self.dbapi 있는지 확인하는 sqlalchemy.databases.firebird.py 패치 .initialized가 self.dbapi.init를 호출하기 전에 True입니다 (... 내가이 시나리오 및 실행을 얻을 관리 할 수있는 유일한 방법이었다
SQLAlchemy의 0.4.7 패치 :.

 
diff -Naur SQLAlchemy-0.4.7/lib/sqlalchemy/databases/firebird.py SQLAlchemy-0.4.7.new/lib/sqlalchemy/databases/firebird.py 
--- SQLAlchemy-0.4.7/lib/sqlalchemy/databases/firebird.py  2008-07-26 12:43:52.000000000 -0400 
+++ SQLAlchemy-0.4.7.new/lib/sqlalchemy/databases/firebird.py 2008-10-01 10:51:22.000000000 -0400 
@@ -291,7 +291,8 @@ 
     global _initialized_kb 
     if not _initialized_kb and self.dbapi is not None: 
      _initialized_kb = True 
-   self.dbapi.init(type_conv=type_conv, concurrency_level=concurrency_level) 
+   if not self.dbapi.initialized: 
+    self.dbapi.init(type_conv=type_conv, concurrency_level=concurrency_level) 
     return ([], opts) 

    def create_execution_context(self, *args, **kwargs):