gpt4 book ai didi

python - 数据迁移和 AppEngine

转载 作者:太空狗 更新时间:2023-10-30 00:46:37 29 4
gpt4 key购买 nike

我在 Rails 方面做了很多开发,并且正在研究使用 Python 和 App Engine 开发项目。

根据演示项目和我目前所见,我对 App Engine 项目有疑问/疑虑:

应用引擎如何处理数据迁移?例如,如果我更改实体/表的名称(例如:文本到文档),或更改现有表中的列(例如:年龄到出生日期)——发生这种情况时它如何处理旧数据?

谢谢!

最佳答案

简短的回答是:它不处理它。您不能更改实体的名称,可以更改属性,但必须手动更新数据。

您的模型定义只是您的应用程序“查看”如何解释存储在数据存储区中的实体。如果我有这样的定义:

class MyEntity(db.Model):
text = db.TextProperty()

然后运行我的应用程序一段时间,填充我实体的 text 属性,然后将该列重命名为:

class MyEntity(db.Model):
description = db.TextProperty()

我现有的所有数据都将保持原样(数据存储中的许多实体具有填充的 text 属性。只有当我尝试将实体加载到我的模型实例中时,我才会将它们视为空实体(没有 description 设置,并且无法访问当前存在的 text 数据)。将我的实体保存(放入)回数据存储区将覆盖旧的数据,数据将丢失。

如果您像这样更改架构,或者更可能只是更改字段类型。预处理数据以处理更改将取决于您。如果您尝试加载不再符合模型定义的实体,模型层将引发错误。

为了帮助完成更新数据的手动任务,选择的武器是:

  1. remote_api/remote_api_shell.py
  2. mapreduce库(尤其是“映射器”部分)

通过 remote_api[1] 设置,您可以为您的实时数据打开一个交互式 Python session ,并在本地(大部分)运行脚本,就像它们直接在生产服务器上运行一样。我发现这是为小型一次性任务修复/清理数据的最快最简单的方法。

如果您有更大的任务,可以使用映射器 api[2],比如更改数百万个实体并希望尽可能多地并行执行这些任务。

关于python - 数据迁移和 AppEngine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6892408/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com