我使用ZMySQLDA连接器从Plone(Zope)连接到Mysql中的数据库,其中需要数据库用户名为passwd格式的连接字符串。
但我需要从外部文件传递连接字符串,以便我可以从外部文件更改它,而无需从zope管理界面更改连接对象。
有可能吗?
任何帮助或指示将不胜感激。
答案 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就不会让你这样做。
我认为没有简单的方法来更改文件系统对象更新连接字符串。在修改文件以实现更改后,您至少需要遍历某个视图。