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