Для чего предназначено свойство md5_hash объекта BlobInfo? - PullRequest
1 голос
/ 26 ноября 2011

Если я позвоню

blobsotre.BlobInfo.properties() 

функция возврата

set(['filename', 'creation', 'content_type', 'md5_hash', 'size'])

но если я позвоню

a = blobstore.BlobInfo.all()
obj = a.fetch(1)[0]
print obj.md5_hash

исключение функции

AttributeError(name) AttributeError: md5_hash

Для чего предназначено свойство md5_hash объекта BlobInfo? Постскриптум Я хочу проверить, какой загруженный файл не существует в Blobstore.

Ответы [ 3 ]

1 голос
/ 28 ноября 2011

Код, который вы показываете, прекрасно работает на shell.appspot.com :

>>> from google.appengine.ext import blobstore
>>> blobstore.BlobInfo.properties()
set(['filename', 'creation', 'content_type', 'md5_hash', 'size'])
>>> o = blobstore.BlobInfo.all().get()
>>> o.md5_hash
u'5d41402abc4b2a76b9719d911017c592'

Вы должны делать что-то отличное от того, что в вашем примере кода. Можете ли вы вставить свой точный код и полную трассировку стека?

1 голос
/ 12 июля 2012

Возможно, у вас есть объекты BlobInfo, в которых не записан md5_hash, включая первый результат, возвращаемый blobstore.BlobInfo.all()

Вы можете легко проверить в интерактивной консоли вашего сервера:

from google.appengine.ext import blobstore

query1 = blobstore.BlobInfo.all()
query2 = blobstore.BlobInfo.gql("WHERE md5_hash != ''")

print query1.count(), query2.count()
# for me this returns '100 85'
1 голос
/ 26 ноября 2011

Криптографическая хеш-функция может использоваться для многих вещей:

  • для предоставления значения проверки целостности файла / большого двоичного объекта для обнаружения изменений
  • для предоставления уникального идентификатора файла / блоба, используемого для ссылки на содержимое
  • , чтобы включить быстрый поиск содержимого хеш-таблицы
  • , чтобы включить быстрый поиск дубликатов файлов
  • и т.д.

Конечно, «предполагаемое» использование зависит от того, какое приложение поддерживает Blobstore - вы создаете корзину для покупок, или кэш данных, или приложение для обработки с уменьшением карты, или что?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...