jjzjj

python - 在 NDB 中跟踪未知类型的反向引用

我正在GAE和Python2.7运行时上编写我的第一个RESTfulWeb服务;我已经开始使用GuidoShiny的新ndbAPI。但是,如果没有原始数据库API的隐式反向引用功能,我不确定如何解决特定情况。如果用户代理请求特定资源并且这些资源被移除1度:主机/api/种类/id?depth=2假设相关实体的种类在开发时未知,那么从一对多关系中的“一”中发现相关实体集合的最佳方法是什么?我无法使用previousSOinquiry中描述的替换查询由于后者的限制。我的模型在运行时是可定义的(因此不是硬编码的)这一事实使我无法使用查询来过滤匹配键的属性。Ancestor和其他恶意查询也由于

python - 如何在 App Engine NDB 中测试 DateTimeProperty?

我正在尝试使用AppEngine的NDB测试DateTimeProperty的过滤器,但我已将其设置为auto_now?有没有办法在单元测试中解决这个问题?例子:classMyModel(ndb.Model)timestamp=ndb.DateTimeProperty(auto_now)name=ndb.StringProperty()deftestMyModelFilter(self):test1=MyModel()test1.timestamp=datetime.datetime.now()-datetime.timedelta(hours=2)test1.put()test2=M

python - Google ndb 库中的内存泄漏

我认为ndb库中存在内存泄漏,但我找不到位置。有没有办法避免下面描述的问题?您是否有更准确的测试思路来找出问题所在?这就是我重现问题的方式:我创建了一个包含2个文件的极简GoogleAppEngine应用程序。app.yaml:application:myapplicationidversion:demoruntime:python27api_version:1threadsafe:yeshandlers:-url:/.*script:main.APPlibraries:-name:webapp2version:latestmain.py:#-*-coding:utf-8-*-"""M

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

假设我最初创建了一个ndb.Model并想更改字段的ndb属性类型(例如IntegerProperty到StringProperty),但想转换存储在该字段中的当前数据,这样我就不会丢失该数据。一种方法是简单地创建一个新的字段名称,然后使用脚本将数据迁移过来,但是还有其他更方便的方法来实现这一点吗?例如,假设我有以下模型:classCar(ndb.Model):name=ndb.StringProperty()production_year=ndb.IntegerProperty()我存储了实体的一个实例:c=newCar()c.name="Porsche"c.production_y

python - 如何理解appengine ndb.tasklet?

来自documentation:AnNDBtaskletisapieceofcodethatmightrunconcurrentlywithothercode.Ifyouwriteatasklet,yourapplicationcanuseitmuchlikeitusesanasyncNDBfunction:itcallsthetasklet,whichreturnsaFuture;later,callingtheFuture'sget_result()methodgetstheresult.文档中的解释和示例对我来说真的很神奇。我可以使用它,但感觉很难正确理解它。例如:我可以将任何类

python - 将 yield 与多个 ndb.get_multi_async 一起使用

我正在尝试提高我当前从应用引擎数据存储区查询的效率。目前,我使用的是同步方法:classHospital(ndb.Model):name=ndb.StringProperty()buildings=ndb.KeyProperty(kind=Building,repeated=True)classBuilding(ndb.Model):name=ndb.StringProperty()rooms=ndb.KeyProperty(kind=Room,repeated=True)classRoom(ndb.Model):name=ndb.StringProperty()beds=ndb.Ke

python - ndb 中的多对多关系

尝试与ndb建立多对多关系模型。谁能举出一个很好的例子来说明如何做到这一点?这是我目前拥有的示例:classPerson(ndb.Model):guilds=ndb.KeyProperty(kind="Guild",repeated=True)classGuild(ndb.Model)members=ndb.KeyProperty(kind="Person",repeated=True)defadd_person(self,person):self.members.append(person.key)self.put()person.guilds.append(self.key)per

python - 如何改变 ndb 重复属性?

appenginedocu在重复的ndbproperiertes上说:Whenupdatingarepeatedproperty,youcaneitherassignitanewlistormutatetheexistinglistinplace.https://developers.google.com/appengine/docs/python/ndb/properties#repeated两个问题:当我只是改变列表而不是放置一个新列表时,我是否保存写操作?我该如何准确地进行突变?只需附加对象并删除列表中的项目,就像我在python中对列表所做的那样?谢谢!

python - 为什么 required 和 default 在ndb中是互斥的?

在旧的googleappenginedatastoreAPI中,“required”和“default”可以一起用于属性定义。使用ndb我得到一个ValueError:repeated,requiredanddefaultaremutallyexclusive.示例代码:fromgoogle.appengine.extimportndbfromgoogle.appengine.extimportdbclassNdbCounter(ndb.Model):#raisesValueErrorcount=ndb.IntegerProperty(required=True,default=1)c

python - App Engine memcache/ndb.get_multi 的性能问题

在AppEngine(Python)中使用ndb.get_multi()从Memcache获取多个键时,我发现性能非常差。我正在获取约500个小对象,所有这些对象都在内存缓存中。如果我使用ndb.get_multi(keys)执行此操作,则需要1500毫秒或更多时间。以下是AppStats的典型输出:和如您所见,所有数据均由内存缓存提供。大多数时间被报告为在RPC调用之外。但是,我的代码尽可能少,所以如果时间花在CPU上,它必须在ndb中的某个地方:#Getsetofkeysforitems.Thisrunsveryquickly.item_keys=memcache.get(item