我有一个 Plone 4 站点,它通过一个Z Psycopg 2 Database Connection
对象使用一个额外的 Postgres 数据库。project_suffix
由于 ZODB 有时会出于测试和开发目的而复制,因此在命名方案中存在一些数据库连接对象;这样,我可以通过buildout
配置脚本选择现有的数据库适配器之一。
但是,我注意到当 Plone 启动时,所有现有的数据库连接对象显然都打开了。我不知道这是否是一个真正的问题(例如,将更改应用到另一个实例的数据库架构时),但我宁愿让 Plone只打开实际使用的单个数据库。我怎样才能做到这一点?
(克隆 4.2.4、Postgres 9.1.9、psycopg2 2.5.1、Debian Linux)
更新:
我在我的产品中添加了一些代码__init__.py
,大致如下所示:
from Shared.DC.ZRDB.Connection import Connection
...
dbname = env['DATABASE']
db = None
for id, obj in portalfolder.objectItems():
if isinstance(obj, Connection):
if id == dbname:
db = obj
else:
print 'before:', obj._v_connected
obj._v_database_connection.close()
print 'after: ', obj._v_connected
但是,这似乎不起作用;我知道没有例外,但是对于before
和after
,我都会得到一个时间戳,然后在查看 ZMI 时,连接似乎是打开的。
请问有什么想法吗?