- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
直到今天我才注意到一些事情。
record3 = Record(record_date=today.date(), user=user.key)
record3.put()
record3.record_date=tomorrow.date()
record = Record.query().get()
我创建一个实体并将其存储在数据存储中。然后我更改它的日期,但不通过 Put() 保存它。当我从数据存储中查询它时,我希望日期显示今天的日期,但它已经显示明天的日期。
put() 是否使用某种更新后 Hook ,以便在 put() 发生后始终更新实体?它与使用 SQL 的传统 ORM 完全不同。
更新:为了证明我的观点或为了遗漏一些东西:
def test_get_or_insert_updates_after_get(self):
user = self.signup()
today = datetime.datetime.strptime('20140405', '%Y%m%d')
tomorrow = datetime.datetime.strptime('20140406', '%Y%m%d')
record3 = Record(record_date=today.date(), user=user.key)
record3.put()
record3.record_date=tomorrow.date()
record = Record.query().get()
self.assertEqual(today.date(), record.record_date)
此单元测试失败。但是为什么?
AssertionError: datetime.date(2014, 4, 5) != datetime.date(2014, 4, 6)
解决方案:起初我有点难以理解丹尼尔的解决方案。这是代码示例:
ctx = ndb.get_context()
ctx.clear_cache()
record = Record.query().get()
最佳答案
你被 ndb 误导了 in-context cache :
When an NDB function writes to the Datastore, it also writes to the in-context cache. When an NDB function reads an entity, it checks the in-context cache first.
由于您正在执行直接 .get()
,而不是查询,ndb 将使用上下文缓存并返回相同的对象。它不会从数据存储中获取新实例,因此您将看到该对象的本地修改。您可以通过以下方式验证这一点:
self.assertTrue(record is record3)
或者,使用查询或专门设置上下文以禁用缓存,如上面的链接所述。
关于python - 通过 put() 保存实体后,是否会立即将任何进一步的更改应用于数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913756/
我有这个: const {ops} = getOplogStreamInterpreter(strm); ops.del.subscribe(v => { console.log('delete
我四处搜索,据我所知,POST 表单请求已被限制为 10MB (http://golang.org/src/net/http/request.go#L721)。 如果我要在我的 ServeHTTP 方
我是一名优秀的程序员,十分优秀!