繁体   English   中英

压缩文本以存储在mysql数据库中,是否必须为base64

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM