【问题标题】:How to connect to another different database in PostgreSQL with ORM in Odoo?如何使用 Odoo 中的 ORM 连接到 PostgreSQL 中的另一个不同数据库?
【发布时间】:2017-10-24 07:19:06
【问题描述】:

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

【问题讨论】:

    标签: python postgresql python-2.7 orm odoo


    【解决方案1】:

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

    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 ...')
    

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2020-01-28
      相关资源
      最近更新 更多