小编ran*_*ser的帖子

更改NDB字段的属性类型时迁移数据

假设我最初创建一个ndb.Model并想要更改字段的ndb属性类型(例如IntegerProperty到StringProperty),但是想要转换存储在该字段中的当前数据,以便我不会丢失该数据.一种方法是简单地创建一个新的字段名称,然后使用脚本迁移数据,但还有其他更方便的方法来完成此操作吗?

例如,假设我有以下模型:

class Car(ndb.Model):
    name = ndb.StringProperty()
    production_year = ndb.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

我存储了一个实体的实例:

c = new Car()
c.name = "Porsche"
c.production_year = 2013 
Run Code Online (Sandbox Code Playgroud)

并希望将production_year更改为ndb.StringProperty()而不会"丢失"我设置的值(它仍然存在,但不可检索).如果我只是将production_year更改为ndb.StringProperty()的实例,则字段值不报告有意义的值,因为类型不匹配.

所以,如果我将模型更改为:

class Car(ndb.Model):
    name = ndb.StringProperty()
    production_year = ndb.StringProperty()
Run Code Online (Sandbox Code Playgroud)

尝试使用点表示法检索字段将导致值为None.任何人遇到这种情况,你能解释一下你做了什么来解决它吗?谢谢.

python google-app-engine app-engine-ndb

7
推荐指数
1
解决办法
1515
查看次数

标签 统计

app-engine-ndb ×1

google-app-engine ×1

python ×1