我想从实例化的entity_pb.EntityProto中删除一个属性,以这种方式实例化:
pb = entity_pb.EntityProto()
prop1 = pb.add_property()
prop1.set_name('prop1')
prop2 = pb.add_property()
prop2.set_name('prop2')
假设我不再需要prop1了。我该如何删除它?
这个问题涉及想要将protobufs注入AppEngine数据存储区,但是不能放置具有__scatter__
属性的现有protobufs。如果我尝试放置实体,则会返回此错误:BadRequestError: cannot store entity with reserved property name '__scatter__'
答案 0 :(得分:1)
您可以操纵pb.property_list()
的结果,这样就可以了:
properties = pb.property_list()
properties[:] = [e for e in properties if e.name() != '__scatter__']
答案 1 :(得分:0)
查看protobuf documentation,操作单个EntityProtos没有任何内容。 entity_pb.py中的代码也没有显示任何相关的方法,所以我选择“让我们直接操纵对象,即使你不是真的应该接近”。
props = element.property_
for i in range(len(props)):
if props[i].name() == '__scatter__':
props.pop(i)
break