odoo12里面的RPC【远程过程调用】
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【远程过程调用】的更多相关文章
- day07 hadoop里面的RPC框架使用
PS: RPC远程调用 Webservice啥的都是远程调用.下面简单介绍其使用过程 Hadoop已经实现了RPC框架,不用我们自己写,不过需要我们注意几点:1.发布服务端和客户端必须包名相同 1.服 ...
- Activity往另外一个Activity传值,Fragment获取另外一个Activity里面的值。
在oneActivity中实现跳转到MainActivity //intent 用来跳转另外一个MainActivity,bundle传值到MainActivity Intent Ma ...
- Java基本概念(2)J2EE里面的2是什么意思
J2EE里面的2是什么意思 J2SE,J2SE,J2ME中2的含义要追溯要1998年.1998年Java 1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个 ...
- 在wex5平台grid里面的gridselect下拉不能显示汉字问题
当grid里面有gridSelect组件的时候,gridSelect里面的bind-ref是对应的数据库存入字段(int类型),bind-labelRef是对应的计算字段(视图里面的),而option ...
- dede文章调用时过滤调 body里面的style属性和值
dede 发布文章的时候会在里面的标签中添加一些style 属性,现在改网站想去掉这些属性和里面的值,因为文章太多所以就用下面的方法 \include\arc.listview.class.php 在 ...
- 提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载
要求:手机端打开某个页面的详细信息,因为网速或者别的原因,响应太慢,因为图片大的原因,希望先进来,图片在网页运行的情况再慢慢加载(jquer延迟加载) http://www.w3cways.com/1 ...
- JAVA里面的IO流(一)分类2(节点流和处理流及构造方法概要)
IO流根据处理对象的不同分为节点流和处理流. 直接对文件进行处理的流为节点流: 对流进行包装从而实现对文件的优化处理的流为处理流. 节点流类型: 可以看出,节点流主要分这几大类: 文件流 文件流构造方 ...
- 头文件里面的ifndef /define/endif的作用
c,c++里面,头文件里面的ifndef /define/endif的作用 今天和宿舍同学讨论一个小程序,发现有点地方不大懂······ 是关于头文件里面的一些地方: 例如:要编写头文件test.h ...
- 尝试一下sql server2016里面的json功能
前2天下载了一个2016的rc版本来玩一下,首先感觉是~开发者版本免费啦!!撒花!!!另外一个东西,sql server 2016能支持json 的解析和应用啦,虽然我不知道它的性能如何,先来一发测试 ...
随机推荐
- 微信小程序踩坑之获取手机号
最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况.研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮助到大家. 需求描述 在 ...
- Linux添加永久静态路由
1.首先查看一下本机的路由 route -n 2.比如我们添加两条静态路由,访问192.168.142.100时通过192.168.142.10:访问192.168.142.200时通过192.168 ...
- 旁路电容的PCB布局布线透彻详解(4)
原文地址点击这里: 前面使用了较多的篇幅介绍旁路电容的工作原理及其选择依据,我们已经能够为电路系统中相应的数字集成芯片选择合适的旁路电容,在实际应用过程中,旁路电容的PCB布局布线也会影响到高频噪声旁 ...
- Netty 框架学习 —— 基于 Netty 的 HTTP/HTTPS 应用程序
通过 SSL/TLS 保护应用程序 SSL 和 TLS 安全协议层叠在其他协议之上,用以实现数据安全.为了支持 SSL/TLS,Java 提供了 javax.net.ssl 包,它的 SSLConte ...
- __sync_fetch_and_add函数(Redis源码学习)
__sync_fetch_and_add函数(Redis源码学习) 在学习redis-3.0源码中的sds文件时,看到里面有如下的C代码,之前从未接触过,所以为了全面学习redis源码,追根溯源,学习 ...
- hdu 1556 Color the ball 线段树 区间更新
水一下 #include <bits/stdc++.h> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 ...
- Nginx:Nginx日志切割方法
Nginx的日志文件是没有切割(rotate)功能的,但是我们可以写一个脚本来自动切割日志文件. 首先我们要注意两点: 1.切割的日志文件是不重名的,所以需要我们自定义名称,一般就是时间日期做文件名. ...
- Java实验项目六——使用DAO模式实现对职工表的操作
Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...
- 因为它,我差点删库跑路:js防抖与节流
前言 前端踩雷:短时间内重复提交导致数据重复. 对于前端大佬来说,防抖和节流的技术应用都是基本操作.对于"兼职"前端开发的来说,这些都是需要躺平的坑. 我们今天就来盘一盘js防抖与 ...
- Mysql常用语句整理
把工作常用的mysql命令整理一下,省的用的时候在到处找 1.常用命令 1.1 登录 mysql -u root -p 1.2 生成随机数 若在 i<=R<=j 范围内生成随机数 FLOO ...