Openerp 7.0 附件存储位置
我们知道对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地址): 01 #!/usr/bin/python
02 import xmlrpclib
03 username = 'admin' #the user
04 pwd = 'password' #the password of the user
05 dbname = 'database' #the database
06 # Get the uid
07 sock_common = xmlrpclib.ServerProxy ('<URL>/xmlrpc/common')
08 uid = sock_common.login(dbname, username, pwd)
09 sock = xmlrpclib.ServerProxy('<URL>/xmlrpc/object')
10 def migrate_attachment(att_id):
11 # 1. get data
12 att = sock.execute(dbname, uid, pwd, 'ir.attachment', 'read', att_id, ['datas'])
13 data = att['datas']
14 # Re-Write attachment
15 a = sock.execute(dbname, uid, pwd, 'ir.attachment', 'write', [att_id], {'datas': data})
16 # SELECT attachments:
17 att_ids = sock.execute(dbname, uid, pwd, 'ir.attachment', 'search', [('store_fname','=',False)])
18 cnt = len(att_ids)
19 i = 0
20 for id in att_ids:
21 att = sock.execute(dbname, uid, pwd, 'ir.attachment', 'read', id, ['datas','parent_id'])
22 migrate_attachment(id)
23 print 'Migrated ID %d (attachment %d of %d)' % (id,i,cnt)
24 i = i + 1
25 print "done ..." 运行这个脚本后,我们还需要清除ir_attachements表: 1 update ir_attachment set db_datas = null where store_fname is not null
2 vacuum (full, analyze) ir_attachment
Openerp 7.0 附件存储位置的更多相关文章
- openerp 7.0邮件接收中文附件乱码问题解决办法
openerp 7.0邮件接收中文附件乱码问题解决办法: 修改文件\addons\mail\mail_thread.py #1064 line插入代码: h=email.Header.Header(n ...
- Confluence 6 附件存储文件系统的分级
从 Confluence 3.0 开始,附件的存储方式有了重大的改变和升级.如果你是从 Confluence 2.10 及其早期版本升级上来的,请参考 Upgrading Confluence 页面中 ...
- 匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置
0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到“类型”,话题的热度就会立马升温,因为很多似是而非.或者片面的概念常常被人们当做是全面和正确的答案.加之最近在园子看到有人翻译的& ...
- Docker 修改默认存储位置
首先使用 docker info 查看 docker 的基本信息 sudo docker info Containers: 0 Images: 5 Storage Driver: devicemapp ...
- 获取tomcat上properties文件的内容——方便文件存储位置的修改,解耦和
在java web开发的时候经常会用到读取读取或存放文件,这个文件的默认路径在哪里呢?写死在程序里面显然是可以的,但这样子不利于位于,假如有一天项目从window移植到linux,或者保存文件的路径变 ...
- HDFS的Java客户端操作代码(查看HDFS下所有的文件存储位置信息)
1.查看HDFS下所有的文件存储位置信息 package Hdfs; import java.net.URI; import org.apache.hadoop.conf.Configuration; ...
- 构建安全的Xml Web Service系列之wse之证书存储位置
原文:构建安全的Xml Web Service系列之wse之证书存储位置 我们在前几天对xml web service的安全性提出了一些建议,大家可以通过以下地址访问: 构建安全的Xml Web Se ...
- OpenStack(企业私有云)万里长征第六步——OpenStack网络及虚拟机存储位置
一.前言 昨天又装了一遍OpenStack.码农这项工作就如同人生,永远有你想不到的意外在等着你,时而是惊喜时而是悲伤.在装的过程中倒是很顺利,只是在安装完成之后碰到了两个之前没有碰到的问题,这里记录 ...
- centos 7.1系统更改Mariadb数据存储位置步骤分享
一.首先确保你要更改Mariadb数据存储的位置的空间够大 现在已将Mariadb存储位置更改到/opt/目录下 1.然后将Mariadb服务stop:systemctl stop mariadb 2 ...
随机推荐
- Android MMC/EMMC/MTD Partition Layout
Android devices have a couple of partitions to store different data. The common ones are the recover ...
- C# iTextSharp 生成 PDF
使用iTextSharp在Asp.Net中操作PDF系列文章 目录 http://www.cnblogs.com/CareySon/category/332146.html 实战 iTextSharp ...
- Spring Boot中使用redis的发布/订阅模式
原文:https://www.cnblogs.com/meetzy/p/7986956.html redis不仅是一个非常强大的非关系型数据库,它同时还拥有消息中间件的pub/sub功能,在sprin ...
- CentOS6.5和RedHat6.5下以rpm方式安装mysql-5.6.20
转帖;http://blog.csdn.net/mw08091020/article/details/39234207 a.检查下linux是不是已经安装了mysql rpm -qa | grep - ...
- 如何精简Unity中使用的字体文件
在游戏开发过程中,为了UI界面美观和显示效果一致性的考虑,大部分游戏都会使用动态字体来表现文字.尤其在这个看脸的时代,一种字体已经无法满足UI同学对美观的需求,因此我们常常发现若干个小则两三兆,大则十 ...
- 分割流 SequenceInputStream (转)
import java.io.*;import java.util.*; class SplitFile{ public static void main(String[] args) throws ...
- 解决hiveserver2报错:java.io.IOException: Job status not available - Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
用户使用的sql: select count( distinct patient_id ) from argus.table_aa000612_641cd8ce_ceff_4ea0_9b27_0a3a ...
- dlib landmark+人面识别
#include "stdafx.h" #include <dlib/image_processing/frontal_face_detector.h> #includ ...
- 【BZOJ】【1923】【Sdoi2010】外星千足虫
高斯消元解Xor方程组 ZYF Orz 这题……不作死就不会死T^T,用bitset确实比较快,而且可以从string直接转成bitset(构造函数). 但问题是我把转过来以后的顺序搞反了……原本以为 ...
- 【BZOJ】【2752】【HAOI2012】高速公路(Road)
数学期望/线段树 然而又是一道road= =上一道是2750…… 下次不要一看期望题就弃疗么…… 期望题≠不可做题……!! 其实在这题中,期望就是(所有情况下 权值之和)/(总方案数) 因为是等概率抽 ...