1

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

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

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

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

4

1 回答 1

1

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

  • 雷鸟和 Outlook 插件
  • joomla 和 magento 模块
  • “事件moodle”模块

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

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

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

于 2013-02-10T10:13:56.763 回答