app-engine-ndb相关内容
我创建了两个 MapReduce 管道,用于上传 CSV 文件以批量创建类别和产品.每个产品都通过 KeyProperty 绑定到一个类别.类别和产品模型建立在 ndb.Model 上,因此根据文档,我认为从数据存储区检索它们时,它们会自动缓存在 Memcache 中. 我在服务器上运行了这些脚本,上传了 30 个类别,然后上传了 3000 个产品.所有数据都按预期显示在数据存储区中.
..
嘿伙计们,我想弄清楚如何为以下案例构建我的查询 首先我定义了一个模型 class Variant(ndb.Expando):测试 = ndb.StringProperty()类项目(ndb.Model):test2 = ndb.StringProperty()变体= ndb.StructuredProperty(变体,重复=真)变体 = 变体(测试 =“测试",动态 =“a")item =
..
这是我的 ndb 模型 from google.appengine.ext import ndb从 mainsite.rainbow.models.CFCSocialUser 导入 CFCSocialUser类 CFCSocialGroup(ndb.Model):def remove_duplicate(self, value):raise Exception("检测到重复用户")名称 = n
..
我已经使用 App Engine 的旧 DB Datastore API 看到了这个问题的解决方案,但在使用较新的 NDB API 时找不到解决方案. 添加迁移支持的最佳方法是什么,以便我能够从旧版本的架构迁移到新版本.最好编写一个迁移脚本,这将如何工作? 类似于迁移这样的架构(请注意,示例在 NDB 中): class 图片(ndb.Model):作者 = ndb.StringPr
..
我在理解实体和键在 Google App Engine NDB 中的工作方式时遇到了一些问题. 我有一个 post 实体和一个 user 实体.如何将 post 上的 user_key 设置为 user? 在交互式控制台中,到目前为止我有这个: from google.appengine.ext import ndb从 app.lib.posts 导入 Post从 app.lib.
..
使用 Google App Engine 的 NDB,我希望查询以用户输入的字符串开头的所有项目.示例: abc_123abcdefg123abc 查询 "abc" 应该返回 abc_123, abcdefg(但是,不是 123abc,因为它没有以“abc"开头) 我之前将以下代码用于类似但不同的目的: q = q.filter(order._properties[kw].IN(val
..
来自 NDB 缓存: NDB 为您管理缓存.有两个缓存级别:上下文缓存和通往 App Engine 标准缓存的网关服务,内存缓存.默认情况下,所有实体都启用了两个缓存类型,但可以配置以满足高级需求. 我的应用程序不会更改任何 ndb 缓存配置,因此它必须使用默认值 - 两个缓存级别均已启用. 我正在我的临时环境(一个单独的、专用的 GAE 项目)上运行一些测试,在那里我可以将活动
..
这似乎是一个简单的问题,但我在 类定义. 如果我有查询 Video.query(Video.tags.IN(topics)) topics 以小写的 unicode 字符串形式出现,但 Video.tags 大部分是大写的.我可以遍历 topics 并在查询它们之前将它们大写,但是有没有办法完全忽略大小写? 解决方案 在查询中不能忽略大小写. 通常,如果您知道要进行
..
使用 NDB,可以指定投影对于查询,允许限制为与查询匹配的实体检索的属性数量. 但是,我在文档中找不到任何关于在使用 ndb.get_multi() 时如何指定投影的内容,它总是获取完整的实体. 有没有办法在使用 ndb.get_multi() 时只获取某些属性? 解决方案 不,投影功能仅适用于查询.投射 get() 操作没有任何优势(就更少的 I/O 操作而言).
..
我喜欢 JsonProperty 如何在属性被放入数据存储时自动将 Python 结构编码为 JSON,并在检索时自动解码.但是,最好将该 JSON 数据发送到 Web 浏览器而无需再次对其进行编码.有没有办法获取原始JSON数据(即防止解码)? class DataForBrowser(ndb.Models)json = ndb.JsonProperty()def get_json(self)
..
我环顾四周是为了得到答案,我可以从 Google AppEngine 上 Ndb 上的 GQL 查询获得的结果的最大限制是多少.我正在使用带有游标的实现,但如果我一次检索它们会快得多. 解决方案 基本上,您不再有每个查询 1000 个实体的旧限制,但请考虑使用合理的限制,因为您可能会遇到超时错误,并且最好批量获取它们,这样用户就不会在加载期间等待.
..
IN 查询的文档操作表明这些查询是作为一个大的 OR'ed 等式查询实现的: qry = Article.query(Article.tags.IN(['python', 'ruby', 'php'])) 相当于: qry = Article.query(ndb.OR(Article.tags == 'python',Article.tags == 'ruby',Article.tags =
..
这些查询有什么区别: 带有后续过滤器: qry1 = Account.query() # 检索所有账户实体qry2 = qry1.filter(Account.userid >= 40) # 过滤用户id >= 40qry3 = qry2.filter(Account.userid
..
Google App Engine 的 ndb 提供了一个 _post_put_hook(self, future),记录如下: 在 put() 之后运行的钩子 为了更好地理解这个钩子,我想知道什么时候 self 会与 future 参数的结果不同. 模型挂钩文档提供: 如果您将后挂钩与异步 API 一起使用,则通过调用 check_result()、get_result(
..
假设您使用交易处理 Stripe 付款并更新用户实体: @ndb.transactionaldef process_payment(user_key, amount):用户 = user_key.get()user.stripe_payment(amount) # 对 Stripe 的 API 调用用户余额 += 金额用户输入() 有可能 Stripe API 调用成功但 put 由于争用而失
..
我将 NDB 与 python 2.7 一起使用,并打开线程安全模式. 我知道使用 NDB 查询实体不使用本地缓存或内存缓存,而是直接进入数据存储,与通过键名获取不同.(如果这个前提不正确,剩下的问题可能是多余的.) 因此,一个好的范例是只使用 keys_only=True 进行查询,然后使用 get_multi 来获取完整的实体吗? 好处是keys_only=True 查询比k
..
上下文: 我的模型类继承自基类: class BaseModel(ndb.model):# 常用字段和方法类特定模型(BaseModel):# 具体字段和方法 问题: 我想使用 appengine bulkuploader 服务导出特定模型实体. 我已经定义了配置文件(data_loader.py): 导入系统sys.path.append('.') ## 这是为了确保它找
..
我们有一个旅游搜索网站.为了搜索公交车,我们对公交车运营商实体执行查询.我们使用 GAE Python NDB.当仅存在约 50 个实体时,查询获取响应时间 >55 秒(在部署版本而非开发服务器上). 目前我的查询包含五个项目.如果我增加到五个以上,响应会进一步减慢.请提出将查询时间缩短到约 1 或 2 秒或尽可能短的方法. 请在下面找到相关详细信息(对不起,我试图在某种程度上最小化以下内
..
我正在尝试使用 Expando 模型作为另一个模型中重复的 StructuredProperty.即,我想将无限数量的 Accounts 添加到我的 User 模型中.由于 Accounts 可以根据它们的类型具有不同的属性(Accounts 是对社交网络帐户的引用,例如 Twitter 需要比 Facebook 的 OAuth 过程更多的信息),我有将我的 Account 模型设计为 Expan
..
我有一个包含约 40 GB 数据库的 Google App Engine 项目,但使用 NDB 时读取性能很差.我注意到我的内存缓存大小(如仪表板上所列)只有大约 2 MB.我希望 NDB 隐式地更多地使用内存缓存来提高性能. 有没有办法调试 NDB 的内存缓存使用情况? 解决方案 这个问题的表述相当糟糕——读取性能不佳的原因有很多,大多数是由于应用程序编写的糟糕,但你没有告诉我们有
..