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