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

时间:2008-09-30 20:47:35

标签: python sqlalchemy kinterbasdb

我正在尝试使用turbogears和sqlalchemy开发应用程序。 已经有一个现有的应用程序在同一台服务器上直接在mod_wsgi下使用kinterbasdb。 当使用这两个应用程序时,似乎都没有认识到kinterbasdb已经初始化 在不同的应用程序中使用sqlalchemy和kinterbasdb有什么不明显的东西吗?为了确保只有一个kinterbasdb实例被初始化并且两个应用都使用该实例,是否有人有建议?

1 个答案:

答案 0 :(得分:1)

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

修改两个应用程序以在其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):