在Django中有效存储(并能够过滤)哈希的最佳方法

时间:2017-09-07 21:47:06

标签: django postgresql hash python-3.5 models

我正在尝试创建一个Django应用程序,我可以在其中查找文件的哈希值(md5,sha1或sha256),以便获取该文件的属性。目前,我正在努力决定如何在数据库中有效地存储这些值。

我见过Django的BinaryField,但不幸的是,这似乎是为了纯粹存储密码(哈希),文档明确提到在处理QuerySet时不能过滤该字段。然而,这对我的应用至关重要。我已经在SA上看到另外一篇关于存储MD5哈希的帖子,它被称为(具有良好的性能数字)Django的UUIDField非常适合。但是,UUIDField不支持超过16个字节,因此不适用于SHA1或SHA256哈希值。

我已经在网上查看是否有人为此提出了自定义字段实现,但是干涸了。有没有人对如何进行有好主意?我特意试图避免将哈希存储为(比如)base64或hexstring等价物(使用CharField);我想只存储哈希的字节。我觉得很奇怪,我不能简单地将20或32个原始字节存储到数据库中,并能够对其进行过滤。

提前致谢!如果我能提供更多信息,请告诉我。

编辑:我使用Postgresql作为后端,并使用python3。

0 个答案:

没有答案