【问题标题】:Consequences for changing a model on Google app engine在 Google 应用引擎上更改模型的后果
【发布时间】:2023-03-16 23:55:01
【问题描述】:

SQL Alchemy 或 Django 默认基于关系数据库。因此,对模型的任何更改都需要迁移工具,例如 sqlalchemy-migrate 或 South。

现在切换到 Google App 引擎并使用 ndb,如果我更改模型会发生什么?理论上,像 Big-Table 这样的 NoSQL 数据库不应该关心不断发展的模式,因此不需要迁移。

然而,定义一个像这样的模型,清楚地表明了一个要验证的模式。

class ExampleModel(ndb.Model):
    example_name = ndb.StringProperty(required=True)
    example_description = ndb.TextProperty(required=True)
    added_by = ndb.UserProperty()
    timestamp = ndb.DateTimeProperty(auto_now_add=True)

如果我添加了一个字段会发生什么?更改了字段,甚至删除了字段?

我的假设如下:

添加字段

  • 也许是最简单的情况,只有模型的新实例才会 针对新领域进行了验证。加载任何较旧的实例时, 该字段仍然为空。但是,如果该字段是 按要求设置?

删除字段

  • 在这种情况下,所有旧实例都将包含孤立数据 删除的字段。但他们留在那里,从现在起将被忽略 开。

修改字段名称

  • 以上两者的组合;新名称将被视为 新字段和旧字段将被忽略和孤立。

这个假设正确吗?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore app-engine-ndb


    【解决方案1】:

    您可以在文档中找到许多问题的答案:

    Google App Engine - Updating Your Model's Schema

    但是,如果按要求设置该字段会怎样?

    按要求设置属性仅意味着您必须直接在构造函数中设置值,因此现有实体不受影响。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多