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