【问题标题】:How to migrate from db.model to ndb.model? [duplicate]如何从 db.model 迁移到 ndb.model? [复制]
【发布时间】:2017-01-28 16:31:01
【问题描述】:

我有一个使用 db.model 的旧 gae 应用程序。我知道我应该迁移到ndb.model。有没有简单的方法或者我必须做很多改变?

我的代码相当大,我有一个旧模型 db.model,我用它来构建索引和搜索。我应该保留旧模型并制作新的ndb模型还是尝试更改旧模型?

模型中的一些变量是

cities = db.ListProperty(db.Key) #ndb.KeyProperty(repeated=True)
regions = db.ListProperty(db.Key) #ndb.KeyProperty(repeated=True)
blobs = db.ListProperty(db.BlobKey)  #ndb.BlobProperty(repeated=True)
primary_image = blobstore.BlobReferenceProperty()
usr = db.ReferenceProperty()  # ndb_model.KeyProperty()
hasimages = db.BooleanProperty(default=False,
                               verbose_name='has_images')
userID = db.StringProperty(verbose_name='User ID')
integer_price = db.IntegerProperty()
ip = ndb.StringProperty(verbose_name='ip')
ipcountry = db.StringProperty(indexed=False, verbose_name='origin')
tags = db.ListProperty(db.Category)
category = db.CategoryProperty(verbose_name='Category')
title = db.StringProperty(verbose_name='title')  # required
user = db.UserProperty(verbose_name='userid')
im = db.IMProperty(verbose_name='nickname')  # optional, xmpp
city = db.StringProperty()  # postaladdress should work instead
region = db.StringProperty()  # postaladdress should work instead
url = db.StringProperty(verbose_name='url')
geopt = db.GeoPtProperty(verbose_name='geopt')
text = db.TextProperty(verbose_name='text')

【问题讨论】:

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


    【解决方案1】:

    它不应该特别复杂,并且可以逐步完成,因为您可以在同一个二进制文件中混合 db 和 ndb 代码。见DB to NDB Client Library Migration

    【讨论】:

    • 我正在考虑逐步进行。我的模型相当复杂,并且使用了我必须测试的参考属性。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2020-02-24
    • 2013-06-04
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多