Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 是否可能有一个没有属性的实体类型?_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 是否可能有一个没有属性的实体类型?

Python 是否可能有一个没有属性的实体类型?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我想在数据存储中保留一个“事物”列表。这些“东西”不需要除名称以外的其他信息,并且这些名称必须是唯一的,即它们可以被视为实体的key\u name。在这种情况下,我不需要实体种类的任何显式属性/字段(因为“东西”的名称可以保存在实体的key\u name中)。这可能吗?怎么用?另一种方法是通过为name指定一个专用字段/属性来复制这段信息 class EntityKindWithNoProperty(db.Model): name = db.StringProperty() 我觉得这种

我想在数据存储中保留一个“事物”列表。这些“东西”不需要除名称以外的其他信息,并且这些名称必须是唯一的,即它们可以被视为实体的
key\u name
。在这种情况下,我不需要实体种类的任何显式属性/字段(因为“东西”的名称可以保存在实体的
key\u name
中)。这可能吗?怎么用?另一种方法是通过为name指定一个专用字段/属性来复制这段信息

class EntityKindWithNoProperty(db.Model):
    name = db.StringProperty()

我觉得这种方法是信息的重复。您认为如何?

您是否考虑过使用具有列表属性的单个实体

class ThingSingleton(db.Model):
    things = db.StringListProperty()
使用的最佳方法取决于您的查询模式和预期的基数。

这是可行的

class Empty(ndb.Model):
    pass

e = Empty(id="somestring")
e.put()

为了实现唯一性,您可以预先生成ID,然后使用。或者,根据您的使用模式,获取或插入

这种方法的问题是数据存储争用。应用程序可能希望同时向
内容中添加大量项目。这对性能非常不利。您是否有意使用了
ndb
?使用
db.Model
,使用
key\u name
而不是
id
,例如
Empty.get\u或\u insert(key\u name='something')
可以吗?是的,默认情况下我使用NDB。查看NDB备忘单,您似乎确实可以使用get或insert建议的密钥名称。