есть 2 способа работы с объектами хранилища данных GCP:
Вариант 1 - клиент gcloud lib
from google.cloud import datastore
client = datastore.Client()
...
key = datastore.key.Key(kind, id, project=project_id)
entity = client.get(key)
тип entity
выше равен <class 'google.cloud.datastore.entity.Entity'>
, а содержимоевыглядит как
<Entity('DemoClass', 1234567890123) {'prop1': 'xxx', 'prop2': 'yyy', ...}>
Вариант 2 - REST API
Ответом на выполнение запроса хранилища данных с помощью Rest API является QueryResultBatch , который содержит список EntityResult , а внутри EntityResult есть объект Entity . Тип этого объекта сущности - <class 'dict'>
, и он выглядит примерно так:
{
"key": {
{'partitionId': {
'projectId': 'test_project'
},
'path': [{'kind': 'DemoClass', 'id': '1234567890123'}]
}
},
"properties": {
string: {
object(Value)
},
...
},
}
Вопрос
Существует ли какой-либо "встроенный" способ преобразования их назад и вперед? ? Когда я работаю с DatastoreHook
в Airflow, так как он основан на Rest API, я получаю диктовку Entity , я, безусловно, могу создать datastore.key.Key
и повторно получить, чтобы получить google.cloud.datastore.entity.Entity
, но мне интересно, есть ли лучший, менее расточительный способ сделать это.