使用xmlrpc连接操作odoo

使用xmlrpc.client库连接到Odoo是一种常用的方式,尤其是在需要从外部系统操作Odoo(例如,读取数据、创建记录等)时。以下是使用xmlrpc.client连接到Odoo的具体步骤,以及一些常用方法的示例。

步骤1:导入xmlrpc.client

python 复制代码
import xmlrpc.client

步骤2:设置连接信息

你需要提供Odoo服务器的URL、数据库名称、用户名和密码。

python 复制代码
url = "http://localhost:8069"
db = "odoo_db"
username = "admin"
password = "admin"

步骤3:获取通用登录接口(common)的代理对象

python 复制代码
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))

步骤4:认证

使用用户名和密码进行认证,获取用户的UID。这是后续操作的关键。

python 复制代码
uid = common.authenticate(db, username, password, {})

步骤5:获取对象(models)的代理对象

python 复制代码
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))

方法示例:

下面是一些使用xmlrpc.client操作Odoo的方法示例。

1. 检查版本

获取Odoo服务器的版本信息。

python 复制代码
version = common.version()
print(version)
2. 创建记录

向Odoo中添加一条新记录。

python 复制代码
id = models.execute_kw(db, uid, password,
    'res.partner', 'create',
    [{
        'name': "New Partner",
    }])
print(id)
3. 读取记录

读取特定ID的记录的信息。

python 复制代码
records = models.execute_kw(db, uid, password,
    'res.partner', 'read',
    [[id]], {'fields': ['name', 'country_id', 'comment']})
print(records)
4. 搜索记录

根据条件搜索记录。

python 复制代码
ids = models.execute_kw(db, uid, password,
    'res.partner', 'search',
    [[['is_company', '=', True], ['customer', '=', True]]],
    {'limit': 1})
print(ids)
5. 更新记录

更新一条记录的信息。

python 复制代码
models.execute_kw(db, uid, password, 'res.partner', 'write', [[id], {
    'name': "Updated Partner"
}])
6. 删除记录

删除一条记录。

python 复制代码
models.execute_kw(db, uid, password, 'res.partner', 'unlink', [[id]])
相关推荐
再__努力1点7 分钟前
【77】积分图像:快速计算矩形区域和核心逻辑
开发语言·图像处理·人工智能·python·算法·计算机视觉
matlabgoodboy11 分钟前
程序代做python代编程matlab代码设计plc深度学习java编写C++代写
python·深度学习·matlab
席万里37 分钟前
基于Flask框架实现的一个在线考试系统
后端·python·flask
Algebraaaaa1 小时前
为什么线程阻塞要用.join而不是.wait
java·c++·python
起风了___1 小时前
Python 批量发邮件脚本:Excel 名单 + Jinja2 模板,带日志与防限流,163 邮箱实测可用
python·程序员
Mr.朱鹏1 小时前
大模型入门学习路径(Java开发者版)下
java·python·学习·微服务·langchain·大模型·llm
weixin_421585011 小时前
PYTHON中的索引操作
python
_Li.2 小时前
机器学习-特征选择
人工智能·python·机器学习
魔镜前的帅比2 小时前
Agent 错误恢复与回退策略
python·ai
叶子丶苏2 小时前
第十九节_PySide6基本窗口控件深度补充_剪贴板与拖曳功能(Drag 与 Drop) 下篇
python·pyqt