オブジェクトを介して追加の Postgres データベースを使用する Plone 4 サイトがありZ Psycopg 2 Database Connection
ます。ZODB はテストおよび開発の目的で複製されることがあるため、project_suffix
命名スキームにはいくつかの仲間のデータベース接続オブジェクトがあります。buildout
このようにして、構成スクリプトを介して既存のデータベース アダプタの 1 つを選択できます。
しかし、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 を調べると、接続が開いているように見えます。
何かアイデアはありますか?