[英]Compress text to store in mysql database, does it have to be base64
我从这里得到了一个定义压缩文本字段的代码。 我需要这样做,因为我存储了太多的文本,并且数据库太大。 问题在于该代码没有任何文档,并且令人困惑。
特别是,我在这里做了一些修改:
def get_prep_value(self,value):
if not value:
return value
try:
tmp = value.encode('utf-8').encode('bz2')
except Exception:
return value
else:
if len(tmp) > len(value):
return value
return tmp
在原始代码中,它们在bz2之后编码为base64 ,这表明并没有进行优化,但是我想知道是否还有其他原因可以这样做? 顺便说一句 我正在使用MySql后端
我还删除了对我来说没有意义的11-15行。为什么您要在此处解码?
对数据进行Base64编码可确保将生成的数据安全地插入到纯文本列中(同时牺牲了bzip2提供的某些压缩)。 作者必须具有将数据插入文本列的要求。 如果您使用的是BLOB类型的列,则无需担心base64部分(并且您将获得更多的压缩)。
鉴于MySQL本机支持gzip压缩,因此链接的示例似乎有些round回。 请参阅有关压缩和加密功能的MySQL文档 ,尤其是COMPRESS()
和UNCOMPRESS()
。 如果您具有可以存储二进制数据的BLOB列,则这些列将很高兴地存储您的压缩数据。
这种方法的缺点是,未压缩的数据需要传送到服务器(该服务器在其上进行了压缩)(或在通过网络传送回客户端之前未压缩)。 这可能提供了作者原始摘要的动机。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.