Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有一个函数来检查您要用于实体的ID是否可用?_Python_Google App Engine_Google Cloud Datastore_Python 2.7 - Fatal编程技术网

Python 是否有一个函数来检查您要用于实体的ID是否可用?

Python 是否有一个函数来检查您要用于实体的ID是否可用?,python,google-app-engine,google-cloud-datastore,python-2.7,Python,Google App Engine,Google Cloud Datastore,Python 2.7,我想我读过一些关于appengine函数的内容,它可以告诉你是否有一个ID/键可以用于实体,或者是否有一个函数可以获取一个可用的ID来选择。AppEngine团队还表示,我们应该在实体创建时设置ID,而不是更改它。但实际上,我们可以用新ID将所有内容复制到一个新实体 谢谢 更新 我想我要寻找的功能是从文档中分配EID: 在描述的页面上,显示了一个用例,其中更新了相关实体,即销售帐户,或者如果该帐户不存在,则创建该帐户。该技术只是尝试用给定的键加载实体;如果它没有返回任何内容,则创建它。在事务中这

我想我读过一些关于appengine函数的内容,它可以告诉你是否有一个ID/键可以用于实体,或者是否有一个函数可以获取一个可用的ID来选择。AppEngine团队还表示,我们应该在实体创建时设置ID,而不是更改它。但实际上,我们可以用新ID将所有内容复制到一个新实体

谢谢

更新 我想我要寻找的功能是从文档中分配EID:

在描述的页面上,显示了一个用例,其中更新了相关实体,即
销售帐户,或者如果该帐户不存在,则创建该帐户。该技术只是尝试用给定的键加载实体;如果它没有返回任何内容,则创建它。在事务中这样做很重要,以避免两个用户都在争夺同一个密钥,并且都看到它不存在(并且都尝试创建它)

要保留一个或多个ID,请使用allocate_IDs()。要检查是否已经获取了一个ID,只需使用Key.from_path(kind,ID)为它构造一个键,然后尝试使用db.get()获取它。还请注意,具有父项的键的ID来自不同的池,并且仅在具有相同父项的键之间是唯一的。

您认为为什么需要这样做?你为什么想要一个特定的ID?谢谢你的评论。我被问到是否有一种方法,比如说制作ID 2002,因为我正在制作的系统依赖ID而不是电子邮件来登录。我认为这并不理想,但它是规范。我可以想象这样一种情况:如果您意外删除user 2002,您可能希望使用相同的ID重新创建该用户,因为该用户有该ID可以自己登录。然后不要删除用户,只需将其禁用:)(我知道这对回答您的问题没有帮助。)@Thomas我知道,但在测试过程中,我得到了一些糟糕的测试数据,所以我不得不删除一个完整的用户实体,即使我不想删除。它似乎用拉丁语1保存了数据,而我的应用程序使用的是unicode,所以我想用全新的unicode数据重新开始。谢谢你的回答。我知道我的场景并不理想,但我需要一种方法来为新实体分配ID。谢谢!具体来说,我将尝试满足一个要求,即用户ID对于一个ssmall应用程序不会超过7个位置,并且用户ID已经是5个位置,比如20022是一个ID,即使数据存储中只有10个左右的用户实体。我的客户特别想要一个用户使用ID而不是用户名登录的系统,所以我正在努力满足这一要求,尽管我不知道我是否喜欢它。@Nickrosenscrantz关于数据存储如何分配ID,你无能为力。您计划如何生成传递给
分配\u id
的号码?我个人会尽全力说服客户不要这样做——就此而言,根本不要使用用户名——使用电子邮件地址!