allocateIds()如何在Cloud Datastore模式下工作?

问题描述 投票:0回答:2

在新的数据存储模式文档中,有mention of allocateIds() method。但是,除了单个段落外,没有示例代码说明如何使用此方法。

我每次创建新实体时都试图分配一个ID,以便可以将ID保存为实体本身的属性。

我认为在伪代码中,它的工作方式如下:

allocateIds()

user_id = allocateIds(number_id_ids=1) user_key = datastore_client.key(kind='User', user_id) user = datastore.Entity(key=user_key) user.update({ 'user_id': user_id }) # Allows a get_user_by_id() query datastore_client.put(user) 在实践中到底如何工作?

python google-cloud-datastore python-3.7
2个回答
2
投票

[当您调用allocateIds()函数时,它会在调用“键”的构造函数时调用allocateIds()的新实例,它会使用您提供的所有参数class Key(object),并通过allocateIds方法重新组合它们。这就是产生密钥的原因。

((如果您想自己查看代码)

来源:_combine_args


0
投票

是,https://googleapis.dev/python/datastore/latest/_modules/google/cloud/datastore/key.html#Key应该适用于要从数据存储模式获取ID并将其用作ID和属性值的情况:

allocateIds()

对于大多数只需要一个自动ID的情况,可以跳过from google.cloud import datastore client = datastore.Client() # Allocate a single ID in kind User # Returns list of keys keys = client.allocate_ids(client.key('User'), 1) # Get key from list key = keys[0] print(key.id) # Create a User entity using our key user = datastore.Entity(key) # Add ID as a field user.update({ 'user_id': key.id }) # Commit to database client.put(user) # Query based on full key query = client.query(kind='User') query.key_filter(user.key, '=') results = list(query.fetch()) print(results)

allocate_ids
© www.soinside.com 2019 - 2024. All rights reserved.