gpt4 book ai didi

python - Appengine - 从标准数据库升级到导航台 - ReferenceProperties

转载 作者:太空狗 更新时间:2023-10-29 21:29:28 24 4
gpt4 key购买 nike

我有一个 AppEngine 应用程序,我正在考虑升级它以使用 NDB 数据库。

在我的应用程序中,我有数百万个具有旧式数据库引用的对象。我想知道将这些 ReferenceProperty 值转换为 KeyProperty 值的最佳迁移路径是什么,或者允许我升级到 NDB 的任何其他解决方案。

(我希望不涉及数据库中所有元素的大量批处理和基于 ReferenceProperty 计算 KeyProperty 的东西——优雅的东西会很好)

我想从 db.Model 升级到 ndb.Model 的模型示例如下:

class UserModel(db.Model):
....

class MailMessageModel(db.Model):
m_text = db.TextProperty()
m_from = db.ReferenceProperty(reference_class = UserModel)
m_to = db.ReferenceProperty(reference_class = UserModel)

最佳答案

好消息,您不必对持久化数据进行任何更改,因为 ext.dbndb 读取和写入完全相同的数据。

这是来自 NDB Cheat Sheet 的引述:

No Datastore Changes Needed!

In case you wondered, despite the different APIs, NDB and the old ext.db package write exactly the same data to the Datastore. That means you don’t have to do any conversion to your datastore, and you can happily mix and match NDB and ext.db code, as long as the schema you use is equivalent. You can even convert between ext.db and NDB keys using ndb.Key.from_old_key() and key.to_old_key().

备忘单是转换模型定义的绝佳指南。例如,更改您的 MailMessageModel 应该很简单:

之前:

class MailMessage(db.Model):
m_text = db.TextProperty()
m_from = db.ReferenceProperty(reference_class=UserModel)
m_to = db.ReferenceProperty(reference_class=UserModel)

之后:

class MailMessage(ndb.Model):
m_text = ndb.TextProperty()
m_from = ndb.KeyProperty(kind=UserModel)
m_to = ndb.KeyProperty(kind=UserModel)

我强烈建议使用备忘单来帮助您进行迁移。

关于python - Appengine - 从标准数据库升级到导航台 - ReferenceProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595163/

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