如何在Odoo中使用ORM连接到PostgreSQL中的另一个不同的数据库?

时间:2017-10-24 07:19:06

标签: python postgresql python-2.7 orm odoo

我在PostgreSQL中有一个数据库,我想通过Odoo ORM使用它,然后实现RPC的东西。我不知道如何连接到另一个数据库(在PostgreSQL中)。 我用Google搜索了这个,我没有找到透视的解决方案或信息。有人可以告诉我这个吗?我应该遵循哪些步骤? 提前致谢

1 个答案:

答案 0 :(得分:0)

您可以执行类似以下代码的操作来创建新的游标并使用通过该游标创建的环境。

from openerp.modules.registry import RegistryManager
from openerp import api

registry = RegistryManager.get('new_database')
cr = registry.cursor()
env = api.Environment(cr, self.env.uid, {})
env['res.users'].search([])                     # you can run ORM methods here with the new environment

您也可以使用此方法来管理游标和环境

env.reset()         # reset environment
env.cr              # pointer to the cr cursor
cr.rollback()       # rollback
cr.execute(         # execute any SQL query
    "UPDATE res_users SET password='new_password' WHERE id=1"
)
cr.commit()         # commit cr changes
cr.close()          # close cursor

postgres角色在两个数据库(当前数据库和其他数据库)上必须具有正确的特权。

注意:我无法使用env变量和ORM方法来更新实际数据库,但可以将其用于读取目的

头也可以这样创建光标:

with openerp.sql_db.db_connect('postgres').cursor() as cr2:
    cr2.execute('SELEC ...')