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建议的密钥名称。