我已将我的对象更改为在v2中具有新的必需属性.当我尝试从数据存储区中获取v1对象时,我得到BadValueError,因为v1没有必需的属性.在现有数据上引入新的必需属性的最佳方法是什么
我会使用mapreduce库来解决这个问题.
首先,将映射器注册到mapreduce.yaml:
mapreduce:
- name: fixing required property
mapper:
input_reader: mapreduce.input_readers.DatastoreInputReader
handler: your handler
params:
- name: entity_kind
default: main.ModelV2
Run Code Online (Sandbox Code Playgroud)
然后定义一个process修改实体的函数:
from mapreduce import operation as op
def process(entity):
if not entity.newproperty :
entity.newproperty = None
yield op.db.Put(entity)
Run Code Online (Sandbox Code Playgroud)
如果您正在处理相对较少数量的实体,则可以避免mapreduce直接修改您的实体,如下所示:
entities = ModelV2.all()
for entity in entities :
if not entity.newproperty :
entity.newproperty = None
entity.put()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |