【发布时间】:2013-11-24 00:53:51
【问题描述】:
我正在稍微切换我的数据模型。我打算将 'repeated=True' 添加到当前存在的 stringProperty。我想知道这会不会搞砸什么?
【问题讨论】:
标签: google-app-engine app-engine-ndb
我正在稍微切换我的数据模型。我打算将 'repeated=True' 添加到当前存在的 stringProperty。我想知道这会不会搞砸什么?
【问题讨论】:
标签: google-app-engine app-engine-ndb
它应该可以工作,除非你有 None 值。单例属性值的磁盘表示几乎与具有一项的重复属性的表示相同,尽管存在一位差异(在 NDB 源代码中搜索“多个”),但在反序列化时会忽略该位。
【讨论】:
StringProperty() 是一个字符串,StringProperty(repeated=True) 是一个字符串列表。
'foo' 与 ['foo']
你肯定会遇到麻烦。
【讨论】:
您将不得不执行某种形式的架构迁移。如果您没有两个实体——比如少于 10,000 个,那么使用 remote_api 可能是最简单的。请参阅这个问题,Migrating data when changing an NDB field's property type - 我在答案中包含了一些代码,允许您在不使用模型的情况下检索原始实体。这允许您操作基础数据 - 在您的情况下,将字符串更改为字符串列表。
我的立场是正确的。对不起。更重大的变化将需要迁移。
【讨论】: