SQLAlchemy和kinterbasdb在mod_wsgi下的单独应用程序中

时间:2020-03-06 14:56:50  来源:igfitidea点击:

我正在尝试使用turbogears和sqlalchemy开发一个应用程序。
在同一服务器上的mod_wsgi下,已经有一个直接使用kinterbasdb的应用程序。
使用两个应用程序时,似乎都无法识别kinterbasdb已被初始化
关于在单独的应用程序中使用sqlalchemy和kinterbasdb,我是否缺少一些显而易见的东西?为了确保仅初始化一个kinterbasdb实例,并且两个应用程序都使用该实例,是否有人提出建议?

解决方案

我以为我已经发布了解决方案...

修改两个应用程序以在其httpd conf文件中的WSGIApplicationGroup $ {GLOBAL}下运行
并修补sqlalchemy.databases.firebird.py以检查self.dbapi.initialized是否为True
在调用self.dbapi.init(...之前,这是我可以设法启动并运行此方案的唯一方法。
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):