【问题标题】:How to connect to a different database in OpenERP?如何在 OpenERP 中连接到不同的数据库?
【发布时间】:2013-02-07 16:45:03
【问题描述】:

如何根据正在使用的模块连接到不同的数据库?我们的场景如下:

我们有一个独立的应用程序,它在某个服务器上拥有自己的数据库,而 OpenERP 在不同的服务器上运行。我们想在 OpenERP 中创建一个模块,它可以利用独立应用程序服务器上的实体,而不是在自己的数据库中创建自己的实体,这可能吗?我们如何更改 ORM 用来连接自己的数据库的连接参数以指向不同的数据库?

当然,一种方法是使用 base_synchro 模块在两个数据库之间同步所需的实体,但考虑到数据量很大,我们不希望重复。另一种方法是使用 xmlrpc 将数据导入 OpenERP,但这仍然需要实体存在于 OpenERP 数据库中。

我们如何在不重复数据的情况下解决这个问题? OpenERP中的模块如何基于不同的数据库创建?

【问题讨论】:

    标签: python xml-rpc openerp


    【解决方案1】:

    连接到外部应用程序的一种方法是创建一个 connector 模块。已经有几个连接器模块可供您查看:

    • Thunderbird 和 Outlook 插件
    • joomla 和 magento 模块
    • “事件 Moodle”模块

    例如,joomla 连接器使用 joomla 插件来处理 OpenERP 和 joomla 之间的通信。使用的通信协议是 XML-RPC,但您可以选择任何您想要的协议。您甚至可以选择使用 psycopg2 模块直接连接到外部数据库(如果外部数据库使用 Postgresql),但不建议这样做。但是,如果这个外部应用程序没有连接 API,也许您别无选择。

    您需要了解连接到此外部应用程序的可用方法并选择其中一种。一旦您选择了正确的协议,您就可以创建您的 OpenERP 模块。

    您可以使用 osv.TransientModel 对象(以前称为 osv 内存)映射存储在外部应用程序上的实体。与这些对象相关的表仍会在 OpenERP 数据库中创建,但数据是易变的(一段时间后删除)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2012-05-04
      相关资源
      最近更新 更多