odoo的RPC有两种:RPC API:1、xml-rpc

                                                     2、json-rpc

案例   xml-rpc

from xmlrpc import client

server_url='http://127.0.0.1:8069'
db_name = 'odoo12_202007'
username='admin'
password = 'admin'
common=client.ServerProxy('%s/xmlrpc/2/common'%server_url)
user_id=common.authenticate(db_name,username,password,{})
if user_id:
print ("success:User id is:",user_id)
else:
print ("Failed:worng credentials") user_id=common.authenticate(db_name,username,password,{}) odoo在/xmlrpc/2/common 端点上提供XML-RPC 该方法是一个公共方法,可以被公开调用 authenticate接受四个参数:数据库名,用户名,密码,用户代理环境【非强制参数,无可传空字典】 返回的是:odoo的版本
version_info = common.version()
案例2
from xmlrpc import client server_url='http://127.0.0.1:8069'
db_name = 'odoo12_202007'
username='admin'
password = 'admin'
common=client.ServerProxy('%s/xmlrpc/2/common'%server_url)
models=client.ServerProxy('%s/xmlrpc/2/object'%server_url)
user_id=common.authenticate(db_name,username,password,{})
if user_id:
search_domain = ['|',['name','ilike','odoo'],['name','ilike','sql']]
book_ids = models.execute_kw(db_name,user_id,password,
'library.book','search',
[search_domain],
{'limit':5})
books_data = models.execute_kw(db_name,user_id,password,
'library.book','read',
['books_ids',['name','date_release']])
else:
print ("Failed:worng credentials")
xml-rpc /创建/更新/删除记录

from xmlrpc import client

server_url='http://127.0.0.1:8069'
db_name = 'odoo12_202007'
username='admin'
password = 'admin'
common=client.ServerProxy('%s/xmlrpc/2/common'%server_url)
models=client.ServerProxy('%s/xmlrpc/2/object'%server_url)
user_id=common.authenticate(db_name,username,password,{})
if user_id:
create_data=[{'name':'test11','release_date':'2020-07-27'},
{'name':'test11','release_date':'2020-07-27'})
#创建新的记录
book_ids = models.execute_kw(db_name,user_id,password,
- 'library.book','create',
[create_data]
)
#修改现有的记录
book_to_write=book_ids[1]
books_data = models.execute_kw(db_name,user_id,password,
'library.book','write',
['book_to_write','write_data'])
#删除现有记录
book_to_delete=book_ids[2]
books_data = models.execute_kw(db_name,user_id,password,
'library.book','unlink',
['book_to_delete'])
else:
print ("Failed:worng credentials")

 案例json-rpc

import json
import random
import requests server_url='http://127.0.0.1:8069'
db_name = 'odoo12_202007'
username='admin'
password = 'admin' json_endpoint='%s/jsonrpc'%server_url
headers = {"Content-Type":"application/json"} def get_json_payload(service,method,*args):
return json.dumps({
"jsonrpc":"2.0",
"method":"call",
"params":{"service":service,
"method":method,
"args":args
},
"id":random.randint(0,100000) })
payload=get_json_payload("common","login",db_name,username,password)
response=requests.post(json_endpoint,data=payload,headers=headers)
user_id=response.json()['result']
if user_id:
print ("success")
else:
print ("failed")
import json
import random
import requests server_url='http://127.0.0.1:8069'
db_name = 'odoo12_202007'
username='admin'
password = 'admin' json_endpoint='%s/jsonrpc'%server_url
headers = {"Content-Type":"application/json"} def get_json_payload(service,method,*args):
。。。。。。。。
#see full function definition in last section
payload=get_json_payload("common","version")
response=requests.post(json_endpoint,data=payload,headers=headers)
print(response.json())
import json
import random
import requests server_url='http://127.0.0.1:8069'
db_name = 'odoo12_202007'
username='admin'
password = 'admin' json_endpoint='%s/jsonrpc'%server_url
headers = {"Content-Type":"application/json"} def get_json_payload(service,method,*args)
#see full function definition in last section
payload=get_json_payload("common","version")
response=requests.post(json_endpoint,data=payload,headers=headers)
user_id=response.json()['result'] 常用方法:read、search、create
if user_id:
#查询数据 ids will be in result keys!
search_domain = ['|',['name','ilike','odoo'],['name','ilike','sql']]
book_ids =get_json_payload("object","execute_kw",db_name,user_id,password,
'library.book','search',
[search_domain],
{'limit':5})
res=requests.post(json_endpoint,data=payload,headers=headers).json() #read数据 ids will be in result keys!
book_ids =get_json_payload("object","execute_kw",db_name,user_id,password,
'library.book','read',
[res['result'],['name','date_release']])
res=requests.post(json_endpoint,data=payload,headers=headers).json()
json-rpc /创建/更新/删除记录

if user_id:
create_data=[{'name':'test11','release_date':'2020-07-27'},
{'name':'test11','release_date':'2020-07-27'}]
#创建新的记录
payload=get_json_payload("object","execute_kw",db_name,user_id,password,
- 'library.book','create',
[create_data])
res=requests.post(json_endpoint,data=payload,headers=headers).json() #修改现有的记录
book_to_write=book_ids[1]
write_data={'name':'book2'}
payload=get_json_payload("object","execute_kw",db_name,user_id,password,
'library.book','write',
['book_to_write','write_data'])
#删除现有记录
book_to_delete=book_ids[2:]
payload=get_json_payload("object","execute_kw",db_name,user_id,password,
'library.book','unlink',
['book_to_delete'])
res=requests.post(json_endpoint,data=payload,headers=headers).json()

ODOORPC

import odoorpc

db_name = 'odoo12_202007'
username='admin'
password = 'admin' odoo=odoorpc.ODOO('localhost',port=8069)
odoo.login(db_name,username,password) #login user=odoo.env.user
bookModel=odoo.env['library.book']
search_domain = ['|',['name','ilike','odoo'],['name','ilike','sql']] #查询
book_ids = bookModel.search(search_domain,limit=5)
for book in bookModel.browse(book_ids)
print (book.name,book.date_release) #创建
book_id = bookModel.create({'name':'test11','release_date':'2020-07-27'})
book=bookModel.browse(book_id)
book.make_available() book=bookModel.browse(book_id)

odoo12里面的RPC【远程过程调用】的更多相关文章

  1. day07 hadoop里面的RPC框架使用

    PS: RPC远程调用 Webservice啥的都是远程调用.下面简单介绍其使用过程 Hadoop已经实现了RPC框架,不用我们自己写,不过需要我们注意几点:1.发布服务端和客户端必须包名相同 1.服 ...

  2. Activity往另外一个Activity传值,Fragment获取另外一个Activity里面的值。

    在oneActivity中实现跳转到MainActivity //intent 用来跳转另外一个MainActivity,bundle传值到MainActivity         Intent Ma ...

  3. Java基本概念(2)J2EE里面的2是什么意思

    J2EE里面的2是什么意思 J2SE,J2SE,J2ME中2的含义要追溯要1998年.1998年Java 1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个 ...

  4. 在wex5平台grid里面的gridselect下拉不能显示汉字问题

    当grid里面有gridSelect组件的时候,gridSelect里面的bind-ref是对应的数据库存入字段(int类型),bind-labelRef是对应的计算字段(视图里面的),而option ...

  5. dede文章调用时过滤调 body里面的style属性和值

    dede 发布文章的时候会在里面的标签中添加一些style 属性,现在改网站想去掉这些属性和里面的值,因为文章太多所以就用下面的方法 \include\arc.listview.class.php 在 ...

  6. 提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载

    要求:手机端打开某个页面的详细信息,因为网速或者别的原因,响应太慢,因为图片大的原因,希望先进来,图片在网页运行的情况再慢慢加载(jquer延迟加载) http://www.w3cways.com/1 ...

  7. JAVA里面的IO流(一)分类2(节点流和处理流及构造方法概要)

    IO流根据处理对象的不同分为节点流和处理流. 直接对文件进行处理的流为节点流: 对流进行包装从而实现对文件的优化处理的流为处理流. 节点流类型: 可以看出,节点流主要分这几大类: 文件流 文件流构造方 ...

  8. 头文件里面的ifndef /define/endif的作用

    c,c++里面,头文件里面的ifndef /define/endif的作用 今天和宿舍同学讨论一个小程序,发现有点地方不大懂······ 是关于头文件里面的一些地方: 例如:要编写头文件test.h ...

  9. 尝试一下sql server2016里面的json功能

    前2天下载了一个2016的rc版本来玩一下,首先感觉是~开发者版本免费啦!!撒花!!!另外一个东西,sql server 2016能支持json 的解析和应用啦,虽然我不知道它的性能如何,先来一发测试 ...

随机推荐

  1. 二、创建测试JSP页面

    root@web1 ~]# rm -rf /usr/local/tomcat/webapps/ROOT/* 1.创建测试网页 [root@web1 ROOT]# vim /usr/local/tomc ...

  2. 性能工具之Jmeter-Dubbo脚本开发

    内容目录: 1.idea 环境项目部署 2.nacos 环境部署 3.dubbo插件部署 4.不带参数请求 5.带参参数请求 Apache Dubbo  是一款高性能.轻量级的开源Java RPC框架 ...

  3. 实验6、Flask API使用示例和拓展

    实验介绍 1. 实验内容 Flask 提供了多种API拓展,本节我们主要学习基于RESTful的Flask应用程序设计 2. 实验要点 学习和掌握多种RESTful的设计模式 3.实验环境 Cento ...

  4. 【NX二次开发】Block UI 指定点

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  5. Mac下安装及配置Appium环境

    candiceli   Mac下安装及配置Appium环境 我是小白,自己研究appium好几周了. 一开始按照同事这篇文章设置Mac下的环境,http://www.cnblogs.com/tangd ...

  6. Python3中列表、字典、元组、集合的看法

    文首,我先强调一下我是一个弱鸡码农,这个随笔是在我学习完Python3中的元组.字典.列表,集合这四种常见数据的数据类型的一些感想,如果有什么不对的地方欢迎大家予以指正.谢谢大家啦 回归正题:这篇随笔 ...

  7. 11张流程图帮你搞定 Spring Bean 生命周期

    在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近吧整个流程化成了一个流程图.待会儿使用流程图,说明以及代码的形式来说明整个声明周期的流程.注意因为代码比较多,这里的流程图 ...

  8. 拦截导弹(CDQ分治,DP)

    很好的题,值得细细说,(果然又是个假期望)....... 首先我们提取信息,显然这是个三维偏序问题 用简单的DP式子表示需要满足 f[i]=max(f[1--j]+1)(v[j]<v[i],h[ ...

  9. 【题解】Luogu P2214 [USACO14MAR]哞哞哞Mooo Moo

    P2214 [USACO14MAR]哞哞哞Mooo Moo 题目描述 Farmer John has completely forgotten how many cows he owns! He is ...

  10. noip模拟9[斐波那契·数颜色·分组](洛谷模拟测试)

    这次考试还是挺好的 毕竟第一题被我给A了,也怪这题太简单,规律一眼就看出来了,但是除了第一题,剩下的我只有30pts,还是菜 第二题不知道为啥我就直接干到树套树了,线段树套上一个权值线段树,然后我发现 ...