使用十六进制,以二进制存储,使用一半的数据大小。
django-binhash的Python项目详细描述
使用十六进制,以二进制存储,使用一半的数据大小。
安装
只需通过pip:
安装pip install django-binhash
并添加到settings.py:
INSTALLED_APPS=[# Django apps'binhash',# Your apps]
兼容性
环境
在python 3.3到3.6以及legacy python(2.7)下测试。
在django 1.8到1.11下测试,但它可能以版本方式运行 年代久远,因为田块结构长期稳定。
数据库
在版本0.1.0中,它只在sqlite上测试,但是如果应该 在Django官方支持的所有数据库中工作良好。
格式
- MD5
- MD5Field
- SHA-1
- SHA1Field
- SHA-2
- SHA224Field
- SHA256Field
- SHA384Field
- SHA512Field
用法
只需导入并设置一些字段:
fromdjango.dbimportmodelsfrombinhashimport(MD5Field,SHA1Field,SHA256Field)classISOFile(models.Model):name=models.CharField('Name',max_length=30)url=models.URLField('URL')md5sum=MD5Field('MD5 Checksum')sha1sum=SHA1Field('SHA-1 Checksum')sha256sum=SHA256Field('SHA-256 Checksum')
然后,像使用charfields一样继续使用它们:
# Create normaly as if the fields were strings:ISOFile.objects.create(name='Ubuntu Server 17.04',md5sum='d02df11b4a7318b7250824f6d0bab9c0',sha1sum='bc5fb639724b5cd90eb739845f246e2c564b0dd8',sha256sum='632e64dde9a7da27fa96bea4d2cf78f0''51065c6becc0d0f728aabfc091396256')# Fetch by string is also supported:ubuntu=ISOFile.objects.get(md5sum='d02df11b4a7318b7250824f6d0bab9c0')# Everything works as expected on the application side:print(ubuntu.sha1sum)# Shows bc5fb639724b5cd90eb739845f246e2c564b0dd8print(type(ubuntu.sha1sum))# Shows <class 'str'>
如果您感到怀疑,请检查数据库:
$ ./manage.py dbshell sqlite> .header on sqlite> .mode column sqlite> select hex(sha1sum) hex_sha1, ...> length(hex(sha1sum)) size_if_this_was_varchar, ...> length(sha1sum) actual_size ...> from downloads_isofile; hex_sha1 size_if_this_was_varchar actual_size ---------------------------------------- ------------------------ ----------- BC5FB639724B5CD90EB739845F246E2C564B0DD8 40 20
许可证
此库是在3子句bsd许可证下发布的。
tl;dr:“只要你相信我”,就可以免费使用。