Как установить свойство даты для сущности хранилища данных Google Cloud при использовании облачных функций Google? - PullRequest
0 голосов
/ 18 февраля 2019

Не удается найти эффективный способ установить «Дата и время» для свойства при создании объекта в облачном хранилище данных с помощью облачных функций

Я использую облачную функцию Python 3.7, которая принимает файл JSON в качестве входных данных.JSON имеет массив объектов, которые считываются один за другим для создания объекта сущности хранилища данных, который затем записывается в хранилище данных.В хранилище данных все свойства хранятся в виде «строки».Я хотел бы, чтобы поля даты были сохранены как свойство «Дата и время» объекта Cloud Datastore.

dsclient = datastore.Client(os.environ.get('project_id')) 
client = storage.Client()
bucket = client.get_bucket(event['bucket'])
blob = bucket.blob(event['name'])
input_bytes = blob.download_as_string()
input_string = input_bytes.decode("utf-8")
obj = json.loads(input_string)
length = len(obj[kind])     

for i in range(0, length):
    key = obj[kind][i]['Key']
    score = create_score(obj[kind][i], key, ns)
    dsclient.put(score)

def create_score(score, key, ns): 
    """creates the score datastore entity"""
    pkey = dsclient.key(kind, key, namespace='test')
    score_entity = datastore.Entity(
        key=pkey,        
        exclude_from_indexes=exclude_index_list
    )
    score_entity.update(score)

    return score_entity

Оператор score_entity.update(score) создает все свойства в виде строк.Есть ли способ, которым я могу указать типы данных каждого свойства при создании?Я видел, что это возможно при использовании модели Python nbd в App Engine.Но я не использую App Engine для создания сущности, это облачная функция.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы должны убедиться, что это свойство datetime.datetime, а не datetime.date или объект другого типа (включая строки).

Вы должны иметь возможность сделать что-то вроде:

score_entity = datastore.Entity(
    key=pkey,        
    exclude_from_indexes=exclude_index_list
)
score_entity["your_datetime"] = datetime.datetime.now()

...

client.put(score_entity)
...