簡體   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