Plone:将连接字符串从外部文件传递到zmysqlda

时间:2012-02-16 12:55:06

标签: mysql plone zope

我使用ZMySQLDA连接器从Plone(Zope)连接到Mysql中的数据库,其中需要数据库用户名为passwd格式的连接字符串。
但我需要从外部文件传递连接字符串,以便我可以从外部文件更改它,而无需从zope管理界面更改连接对象。
有可能吗?
任何帮助或指示将不胜感激。

1 个答案:

答案 0 :(得分:1)

不容易。

你没有说你需要如何将连接字符串存储在文件系统上:如果唯一的限制是它需要 在文件系统上,那就是z3c。 saconfig是为了。它从zcml获取配置,如:

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

但是z3c.saconfig适用于SQLAlchemy,你需要从ZMySQLDA切换到SQLAlchemyDA,即使这样也不会是自动的。如果你准备进行这种转换,我可以帮助你完成剩下的工作。

据我所知,ZMySQLDA是一个过时的适配器(实际上,我没有看到很多人使用Zope DA,但至少SQLAlchemyDA与SQLAlchemy一起使用,维护得非常好)。

如果您使用z3c.saconfig,那么您可以使用collective.saconnect维护连接字符串(不再在文件中,但它位于Plone控制面板而不是ZMI中),然后您就可以使用适配器连接字符串更改时重建连接。单独使用z3c.saconfig就不会让你这样做。

我认为没有简单的方法来更改文件系统对象更新连接字符串。在修改文件以实现更改后,您至少需要遍历某个视图。