1

オブジェクトを介して追加の 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

ただし、これは機能しないようです。私が認識している例外はありませんが、 と の両方beforeafterタイムスタンプを取得し、後で ZMI を調べると、接続が開いているように見えます。

何かアイデアはありますか?

4

0 に答える 0