OpenERP在哪储存附件?

原文地址:http://cn.openerp.cn/where_to_store_attachement_in_openerp_7/

我们知道对OpenERP中的每个内部对象(比如:业务伙伴,采购订单,销售订单,发货单,等等)我们都可以添加任意的附件,如图片,文档,视频等。那么这些附件在OpenERP内部是如何管理的呢?

默认情况下,这些附件在OpenERP v7中是保存在数据库中的。我们知道当附件的数量比较大时,这会严重影响数据库的性能。其实在OpenERP 中我们可以通过设置ir.config.parameter参数来使附件保存在文件系统中,具体菜单位置是:”设置-技术-参数-系统参数-ir_attachement.location” (Settings->Technical->Parameters-System parameters- ir_attachment.location)

比如我们将ir_attachment.location设置为file:///filestore

那么这些附件就会保存在openerp根目录/filestore下, 系统使用sha1哈希算法来创建文件名所以重复的文件在系统中并不会多占空间。

目前只支持file:///协议,实际上我们可以很容易通过扩增模块来支持比如amazons3:///协议,这样我们就可以将附件保存在亚马逊的S3云服务了。

数据库保存附件的模式下,数据是保存在ir_attachment.db_datas
文件系统保存附件的模式下,文件名保存在ir_attachment.db_datas_fname

我们尚为提供这两种模式的自动转换机制。所以,如果你设置了这个参数,那么已存在的附件仍将保存在数据库中,只有新附件会保存在文件系统中,系统会尝试访问这两个不同的位置,所以也没什么问题(先检查db_datas,然后再检查db_datas_fname)

注:本文末尾提供的脚本可以自动将现有数据库中的附件转换到文件系统中

如果你移除了这个参数,你需要设法将在文件系统中保存的附件存回到数据库中,因为系统就只会通过数据库来检查附件了。

将现有数据库中的附件数据转移到文件系统中的脚本(替换URL为您的OpenERP实际访问URL地址):

#!/usr/bin/python
import xmlrpclib
username = 'admin' #the user
pwd = 'password'      #the password of the user
dbname = 'database'    #the database
# Get the uid
sock_common = xmlrpclib.ServerProxy ('<URL>/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)
sock = xmlrpclib.ServerProxy('<URL>/xmlrpc/object')
def migrate_attachment(att_id):
    # 1. get data
    att = sock.execute(dbname, uid, pwd, 'ir.attachment', 'read', att_id, ['datas'])
    data = att['datas']
    # Re-Write attachment
    a = sock.execute(dbname, uid, pwd, 'ir.attachment', 'write', [att_id], {'datas': data})
# SELECT attachments:
att_ids = sock.execute(dbname, uid, pwd, 'ir.attachment', 'search', [('store_fname','=',False)])
cnt = len(att_ids)
i = 0
for id in att_ids:
    att = sock.execute(dbname, uid, pwd, 'ir.attachment', 'read', id, ['datas','parent_id'])
    migrate_attachment(id)
    print 'Migrated ID %d (attachment %d of %d)' % (id,i,cnt)
    i = i + 1
print "done ..."

运行这个脚本后,我们还需要清除ir_attachements表:

update ir_attachment set db_datas = null where store_fname is not null
vacuum (full, analyze) ir_attachment

转载于:https://www.cnblogs.com/cnshen/p/3374274.html

openerp 常见问题 OpenERP在哪储存附件?(转载)相关推荐

  1. OpenERP 源码安装一招鲜

    以下介绍的方法适用Linux系统,需要事先安装好bzr版本工具, 及OpenERP相关Python依赖包, 输入下面的命令: 程序代码:  mkdir openerp cd openerp bzr c ...

  2. CentOS系统搭建OpenERP

    近日公司提出openerp的搭建,觉得openerp里的有些模块比较适合公司,openerp的运作,估计会有利于公司系统化的管理.于是我就去了解openrp,然后来搭建这套强大的系统. 解决问题:li ...

  3. How to install OpenERP 6 on Ubuntu 10.04 LTS Server--1

    Recently at work, we've been setting up several new instances of OpenERP for customers. Our server o ...

  4. Install OpenERP in TurnkeyLinux Core

    2019独角兽企业重金招聘Python工程师标准>>> Install TurnkeyLinux Core 12 and update package to latest versi ...

  5. Odoo(Openerp v8)官方模块一览表

    模块名称 技术名称 作者 电子发票管理 account OpenERP SA 会计与财务 account_accountant OpenERP SA 合同管理 account_analytic_ana ...

  6. odoo8 openerp 入门

    调试 跳入(Step In).跳过(Step Over).跳出(Step Out) 首先来讲一下step into step over step return的区别:  step into就是单步执行 ...

  7. 使用Active Directory的常见问题2

    刚使用Active Directory的常见问题(二).我们使用windows 2003 AD.如何检查我的网络内部的客户端电脑: 1.已经加入域. 2.并且用户也使用域账户登陆了机器. 回答:1.如 ...

  8. Android 里的数据储存

    数据持久化 关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化, ...

  9. 如何在Outlook 2003和OWA中允许接受EXE附件

    见附件!! 转载于:https://blog.51cto.com/280992/75085

最新文章

  1. 【青少年编程】黄羽恒:平行空间
  2. windows 连Linux,Windows下访问Linux资源
  3. 跳一跳python源码下载_Python玩跳一跳【简】
  4. 腾讯老照片修复算法开源,细节到头发丝,3种预训练模型可下载 | GitHub热榜
  5. uva 10559——Blocks
  6. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
  7. Think in Java第四版 读书笔记7第13章 字符串
  8. 一个物理CPU如何划分成多个虚拟CPU
  9. python编写简易超市系统_简易控制台超市销售系统|Python练习系列[1]
  10. 1 linux中解决文件已rm删除但空间不释放的案例
  11. idea在Sonar中点击exclude后恢复
  12. Thinkphp3.2.3 SQL注入漏洞
  13. python程序设计课程设计二级减速器_二级减速器课程设计完整版
  14. 敏捷概念.Stacey矩阵
  15. c语言总分和平均分,用C语言编程平均分数
  16. 一文搞懂底层mysql 索引那些事
  17. shepp logan matlab,怎么用MATLAB生成一个三维的Shepp-Logan头骨模型并保存下来,谢谢了...
  18. 嵌入式笔记-背光控制驱动
  19. 人工智能会被黑客攻击?
  20. html微信拆红包动画特效,利用jQuery实现微信红包领取动画特效

热门文章

  1. 看到这个我冷汗直冒,还好不是指我……
  2. 蓝桥杯 ADV-233 算法提高 队列操作
  3. PAT 乙级 1051. 复数乘法 (15) Java版
  4. LeetCode 152. Maximum Product Subarray
  5. 1025. 反转链表 (25)-浙大PAT乙级真题
  6. Nexus启动失败处理:The nexus service was launched, but failed to start.
  7. ubuntu16 kickstart pxe 安装系统
  8. java 常用集合list与Set、Map区别及适用场景总结
  9. 2016/4/22 图形用户界面
  10. 自动化运维工具puppet(四)