2012-02-16 12 views
1

私はPlone(Zope)からデータベースのusername passwd形式の接続文字列を必要とするZMySQLDAコネクタを使用してMysqlのデータベースに接続しています。
しかし、私はzope管理インターフェースから接続オブジェクトを変更せずに外部ファイルから変更できるように、外部ファイルから渡される接続文字列が必要です。
可能ですか?
助けや指導をいただければ幸いです。Plone:外部ファイルから接続文字列をzmysqldaに渡す

+0

これは頻繁に変更する必要があり、どのように変更をトリガする必要がありますか? Ploneが始まるとき?接続ごとに? – SteveM

+0

zmysqldaがデータベースに接続しようとすると、外部ファイルから接続文字列を取得する必要があります。 –

+0

これらのデータベースアダプタはプールされた接続を維持し、ソリューションがスレッドセーフであることを確認する必要があるため、少し面倒です。これは答えではありませんが、これに取り組もうとしていた場合、データベース接続のプロキシとして機能するカスタムビューを作成し、DAインターフェイスの調査を開始して、接続を安全に終了して開く方法を見つけ出します。接続文字列を更新するのは簡単な作業です。 私は、あなたがこれまでやったことがある時には、SQLAlchemyの使用に切り替えることができ、はるかに幸せになることが分かったと思います。 – SteveM

答えて

1

ファイルシステムに接続文字列をどの程度正確に格納する必要があるのか​​はわかりません。ファイルシステム上でになることが唯一の制約であれば、それはz3c.saconfigのためです。それは次のように、ZCMLから設定を取得します。

<configure xmlns="http://namespaces.zope.org/db"> 
    <include package="z3c.saconfig" file="meta.zcml"/> 
    <engine name="otn" url="postgresql://[email protected]${buildout:dbhost}/otnunit" /> 
    <session name="pas.plugins.sqlalchemy" engine="otn" /> 
</configure> 

しかしz3c.saconfig SQLAlchemyのためであり、あなたがSQLAlchemyDAにZMySQLDAから切り替える必要があるだろう、とさえ、それが自動ではないでしょう。あなたがそのスイッチを作る準備ができているなら、おそらく残りの部分を手伝ってくれるでしょう。

ZMySQLDAは古いアダプタです(本当に私はZope DAをまったく使用していませんが、少なくともSQLAlchemyDAは非常によく管理されています)。

z3c.saconfigを使用している場合は、collective.saconnect(ファイルには存在しませんが、ZMIではなくPloneコントロールパネルにあります)で接続文字列を維持することができます。アダプターは、接続文字列が変更されたときに接続を再構築します。 z3c.saconfigだけではそれを行えません。

ファイルシステムオブジェクトを変更して接続文字列を更新するのは簡単ではありません。少なくとも変更を反映するためにファイルを変更した後に、ある視点を横断する必要があります。

+0

あなたは私の権利を得ました!私は、外部ファイルに接続文字列を入れることだけが唯一の制限である必要があります。しかし私はZMySQLDAだけを使いたいと思っています。 ZMySQLDAの設定はありますか?またはそれのための任意の設定ファイルを作成できますか?ありがとうございました。 –

+0

申し訳ありませんが、これは起こりそうにないでしょう。上記の私の編集したコメントを見てください。 – Auspex

関連する問題