Создание записи в хранилище данных приводит к появлению зашифрованных свойств при просмотре в браузере

Мне удается создать или изменить сущность хранилища данных в порядке с google.cloud.datastore в python, но когда я захожу в свой проект Cloud Platform в браузере и проверяю запись, похоже, что все его свойства зашифрованы (они выглядят как "Rm9vIEJhcg==" и такой - если я создаю его из браузера, я могу видеть нормально).

Я аутентифицируюсь с помощью json-файла идентификатора учетной записи службы:

self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)

Учетная запись службы имеет права "редактора" для всего проекта. Изменение этого параметра на "Владелец", которое установлено для учетной записи gmail, которую я использую для входа, не устраняет проблемы.

Я создаю сущность так:

with self.datastore.client.transaction():
    entity = Entity(Key("key", project="project"))
    entity["property"] = "data"
    self.datastore.client.put(entity)

Есть ли способ сделать так, чтобы запись, которую я изменяю с помощью библиотеки python, была читаемой с сайта браузера?

1 ответ

Решение

Значение на самом деле не зашифровано, скорее закодировано с Base64. Причиной этого является то, что значение хранится как Blob (необработанные байты) вместо Text/Character String. Консоль отображает поля BLOB-объектов в формате Base64. Значение, Rm9vIEJhcg==, когда декодируется с Base64, является Foo Bar.

Я не очень разбираюсь в Python, но взгляну на примечание из официальной документации:

При сохранении сущности во внутреннем интерфейсе значения, которые являются "текстовыми" (юникод в Python2, str в Python3), будут сохранены с использованием поля "text_value" после кодирования в UTF-8. При извлечении из серверной части такие значения будут снова декодированы в "текст". Значения, которые являются "байтами" (str в Python2, байты в Python3), будут сохранены с использованием поля "blob_value" без какого-либо шага декодирования / кодирования.

В зависимости от версии Python, которую вы используете, настройте тип данных для ваших данных, и проблема должна быть решена.

Другие вопросы по тегам