jjzjj

python - 在 Google App Engine 中使用 @ndb.tasklet 或 @ndb.synctasklet

我有一个POST方法,它调用一些tasklet。这些tasklet确实有yield,我的代码中确实有一些x.put_async()。所以我不希望它在所有异步内容完成之前返回。所以我用@ndb.tasklet修饰了我所有的tasklet,它们只是一些小函数。此外,在我的POST方法之上,我有:@ndb.topleveldefpost(self):但是,在documentation它指出:Butifahandlermethodusesyield,thatmethodstillneedstobewrappedinanotherdecorator,@ndb.synctasklet;otherw

python - Google Appengine NDB 祖先与键查询

我将一个实体的键存储为另一个实体的属性,以便将它们关联起来。我们在项目的这一点上处于重构阶段,所以我在考虑引入祖先。这两种方法之间是否存在性能差异?如果我们引入祖先,我可能会获得任何特定优势?classBook(ndb.Model):...classArticle(ndb.Model):book_key=ndb.KeyProperty(kind=Book,required=True)book_key=ndb.Key("Book",12345)第一个祖先查询方法qry=Article.query(ancestor=book_key)第二种简单的键查询方式qry=Article.query

python - 我怎么知道 ndb.Model.get_or_insert 是创建了一个新实体还是获得了一个现有实体?

对于以下(损坏的)函数,如果实体已创建或更新,我想返回True,否则返回False。问题是我不知道get_or_insert()是否得到了一个现有的实体,或者插入了一个实体。有没有一种简单的方法可以确定这一点?classMyModel(ndb.Model):defcreate_or_update(key,data):"""ReturnsTrueifentitywascreatedorupdated,Falseotherwise."""current=MyModel.get_or_insert(key,data=data)if(current.data!=data)current.dat

python - 使用 ndb 的 GAE 错误 - BadQueryError : Cannot convert FalseNode to predicate

我有一个使用python在GoogleAppEngine上运行的应用程序。模型类扩展自ndb(google.appengine.ext.ndb)类。我的一个View对数据库进行异步调用,或多或少类似于:#ExerciseListLogisandbmodelclass#start_current,end_currentaredates#student_idisastring#contentsisalistofkeysexercise_log_query=ExerciseListLog.query(ndb.AND(ExerciseListLog.creation>=start_curren

python - 给定 NDB 游标获取上一页结果的正确方法是什么?

我正致力于通过GAE提供一个API,允许用户通过一组实体向前和向后翻页。我查看了sectionaboutcursorsontheNDBQueriesdocumentationpage,其中包含一些示例代码,描述了如何通过查询结果向后翻页,但它似乎没有按预期工作。我正在使用GAE开发SDK1.8.8。下面是该示例的修改版本,它创建5个示例实体,获取并打印第一页,前进并打印第二页,然后尝试后退并再次打印第一页:importpprintfromgoogle.appengine.extimportndbclassBar(ndb.Model):foo=ndb.StringProperty()#n

python - 是否可以使用 NDB 确定模型是否在数据存储中持久存在?

我正在从db.Model迁移到ndb.Model。在完成此迁移之前我必须解决的唯一问题是没有Model.is_saved方法。我在我的应用程序中使用了db.Model.is_saved来确定分片计数器是否必须在put/delete上更新,以检查冲突的键关于创建实体等文档说ndb.Model没有与is_saved方法等效的方法。我可以使用get_or_insert而不是is_saved重新实现一些用例。但不是全部。作为一个肮脏的黑客,我可以为我通过调用构造函数创建的每个实例设置标志,如_in_memory_instance。但这并不能解决我的问题。我仍然必须至少在每次put()调用后更新

python - ndb to_dict 方法不包括对象的键

我正在利用ndb的to_dict方法将对象的属性转换为python字典。据我所知,根据文档,此方法不包括字典中对象的键或父级:https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_to_dict但是对于我的情况,我需要将key放在字典中。我的偏好是利用内置方法并将其子类化或类似的东西,而不是创建我自己的to_dict方法。完成此任务的最佳方法是什么,还是我遗漏了一些明显的东西?提前致谢。仅供引用:我没有为这个项目利用django,而是直接将python部署到gae。

python - App Engine 中的 db.ReferenceProperty() 与 ndb.KeyProperty

ReferenceProperty在处理两个模块之间的引用方面非常有帮助。狐狸例子:classUserProf(db.Model):name=db.StringProperty(required=True)classTeam(db.Model):manager_name=db.ReferenceProperty(UserProf,collection_name='teams')name=db.StringProperty(required=True)要使用团队实例获取“manager_name”,我们使用team_ins.manager_name。为了获得由特定用户实例管理的“团队”,

Rails 3 应用程序的 MySQL 集群 (NDB) 与 MySQL 复制 (InnoDB) : pros/cons?

我们正在对我们当前的系统进行概述,试图弄清楚我们是否可以提高性能和可靠性。目前,我们运行大量内部Rails应用程序和基于Rails的网站。有些已经是Rails3,有些正在转换为Rails3。它们都连接到以下MySQL设置。mysql01(主服务器)=>mysql02(从属服务器)=>(每日数据库备份到驱动器,每天、每周、每月和每半年备份一次)。所有写入都发生在mysql01上,并且大多数短读取也会转到它,一些“更消耗资源的读取”(例如需要3-10分钟运行并将数据转储到csv或备份中的每月/每周报告)转到mysql02服务器。我们的网站每天有大约3-5K次访问,并且有大约20-30个内部

python - 如何在 Google App Engine for python 中删除 NDB 模型的所有实体?

我有一个ndb模型类:classGame(ndb.Model):gameID=ndb.IntegerProperty()gameName=ndb.StringProperty()有什么方法可以快速删除该类数据库中存储的所有实体?Game.deletAll()之类的东西 最佳答案 不,但您可以通过以下方式轻松做到这一点:fromgoogle.appengine.extimportndbndb.delete_multi(Game.query().fetch(keys_only=True))