如何基于正在使用的模块连接到不同的数据库?我们的方案如下:
我们有一个独立的应用程序,在某个服务器上有自己的数据库,在不同的服务器上运行OpenERP。我们想在OpenERP中创建一个模块,它可以利用独立应用服务器上的实体,而不是在自己的数据库中创建自己的实体,这可能吗?我们如何更改ORM用于连接到自己的数据库以指向不同数据库的连接参数?
当然,一种方法是使用base_synchro模块在两个数据库之间同步所需的实体,但考虑到大量数据,我们不希望重复。另一种方法是使用xmlrpc将数据导入OpenERP,但仍需要实体存在于OpenERP数据库中。
如果没有数据重复,我们如何解决这个问题?如何基于不同的数据库创建OpenERP中的模块?
答案 0 :(得分:1)
连接外部应用程序的一种方法是创建连接器模块。您可以查看几个连接器模块:
例如,joomla连接器使用joomla插件来处理OpenERP和joomla之间的通信。使用的通信协议是XML-RPC,但您可以选择任何所需的协议。您甚至可以选择使用psycopg2模块直接连接到外部数据库(如果外部数据库使用Postgresql),但不建议这样做。但是,如果此外部应用程序没有连接API,您可能无法选择。
您需要知道连接到此外部应用程序的可用方法,并选择其中一种方法。一旦选择了正确的协议,就可以创建OpenERP模块。
您可以使用osv.TransientModel对象(以前称为osv内存)映射存储在外部应用程序中的实体。与这些对象相关的表仍将在OpenERP数据库中创建,但数据是易失性的(在一段时间后删除)。