我有一个Plone 4站点,它通过Z Psycopg 2 Database Connection
对象使用额外的Postgres数据库。由于ZODB有时会被复制用于测试和开发目的,因此在project_suffix
命名方案中有一些数据库连接对象。这样,我可以通过buildout
配置脚本选择一个现有的数据库适配器。
但是,我注意到Plone启动时显然打开了所有现有的数据库连接对象。我不知道这是否是一个真正的问题(例如,当将更改应用于另一个实例的数据库的模式时),但我宁愿让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时,连接似乎是开放的。
请问任何想法?