- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经查看了文档、文档和 SO 问题和答案,但仍在努力理解其中的一小部分。您应该选择哪个以及何时选择?
这是我到目前为止读过的内容(只是示例):
关键类对我来说似乎很简单。当您创建一个 ndb 实体时,数据存储会自动为您创建一个 key ,通常采用 key(Kind, id) 的形式,其中为您创建了 id。
假设您有这两个模型:
class Blah(ndb.Model):
last_name = ndb.StringProperty()
class Blah2(ndb.Model):
first_name = ndb.StringProperty()
blahkey = ndb.KeyProperty()
因此,只需使用 key 类型,您就可以让 Blah1 成为 parent (或有多个姓氏相同的家庭成员)
lname = Blah(last_name = "Bonaparte")
l_key = lname.put() **OR**
l_key = lname.key.id() # spits out some long id
fname_key = l_key **OR**
fname_key = ndb.Key('Blah', lname.last_name) # which is more readable..
然后:
lname = Blah2( parent=fname_key, first_name = "Napoleon")
lname.put()
lname2 = Blah2( parent=fname_key, first_name = "Lucien")
lname2.put()
到目前为止一切顺利(我认为)。现在介绍 Blah2 的 KeyProperty。假设 Blah1 仍然相同。
lname3 = Blah2( first_name = "Louis", blahkey = fname_key)
lname3.put()
这是正确的吗?
如何查询各种事物
查询姓氏:
Blah.query() # all last names
Blah.query(last_name='Bonaparte') # That specific entity.
名字:
Blah2.query()
napol = Blah2.query(first_name = "Napoleon")
bonakey = napol.key.parent().get() # returns Bonaparte's key ??
bona = bonakey.get() # I think this might be redundant
这就是我迷路的地方。如何使用键或键属性从名字中查找 Bonaparte。我没有在这里添加它,也许应该添加它,这是 parent 、祖 parent 、曾祖 parent 的讨论,因为 Keys 跟踪祖先/ parent 。
与固有 key 类相比,您将如何以及为何使用 KeyProperty。还假设您有 3 个传感器 s1、s2、s3。每个传感器都有数以千计的读数,但您希望将读数与 s1 相关联,以便您可以用图表表示今天 s1 的所有读数。你会用哪个? KeyProperty 还是关键类?如果这个问题在其他地方得到了回答,我深表歉意,但我没有看到关于选择哪个以及为什么/如何选择的明确示例/指南。
最佳答案
我认为混淆来自使用 key 。 Key 不与实体内部的任何属性相关联,它只是定位单个实体的唯一标识符。它可以是数字或字符串。
幸运的是,除了这一行之外,您的所有代码看起来都不错:
fname_key = ndb.Key('Blah', lname.last_name) # which is more readable..
构造一个 Key 需要一个唯一的 ID,这与属性不同。也就是说,它不会将变量 lname.last_name
与属性 last_name
相关联。相反,您可以像这样创建记录:
lname = Blah(id = "Bonaparte")
lname.put()
lname_key = ndb.Key('Blah', "Bonaparte")
您保证只有一个 Blah 实体具有该 ID。事实上,如果您使用像 last_name 这样的字符串作为 ID,则无需将其存储为单独的属性。将实体 ID 视为唯一的额外字符串属性。
接下来,注意不要假设 Blah.last_name 和 Blah2.first_name 在您的查询中是唯一的:
lname = Blah2( parent=fname_key, first_name = "Napoleon")
lname.put()
如果您多次执行此操作,将会有多个实体的 first_name 为 Napoleon(所有实体都具有相同的父键)。
继续上面的代码:
napol = Blah2.query(first_name = "Napoleon")
bonakey = napol.key.parent().get() # returns Bonaparte's key ??
bona = bonakey.get() # I think this might be redundant
napol
包含查询,而不是结果。您需要调用 napol.fetch()
以获取所有带有“Napolean”的实体(如果您确定只有一个实体,则调用 napol.get()
)。bonakey
恰恰相反,它持有父实体是因为 get() 而不是 Bonaparte 的 key 。如果您关闭 .get(),那么 bona
将正确地拥有父级。
最后,关于传感器的问题。您可能不需要 KeyProperty 或“固有” key 。如果您有这样的阅读课:
class Readings(ndb.Model):
sensor = ndb.StringProperty()
reading = ndb.IntegerProperty()
然后您可以将它们全部存储在一个没有键的表中。 (您可能希望包括时间戳或其他属性。)稍后,您可以使用此查询检索 then:
s1_readings = Readings.query(Readings.sensor == 'S1').fetch()
关于python - 了解 ndb 键类与 KeyProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020686/
我开始在 Ethereum blockchain 上了解如何开发智能合约以及如何写 web-script用于与智能合约交互(购买、销售、统计......)我得出了该怎么做的结论。我想知道我是否正确理解
我正在 UIView 中使用 CATransform3DMakeRotation,并且我正在尝试进行 45º,变换就像向后放置一样: 这是我拥有的“代码”,但显然没有这样做。 CATransform3
我目前正在测试 WebRTC 的功能,但我有一些脑逻辑问题。 WebRTC 究竟是什么? 我只读了“STUN”、“P2P”和其他...但是在技术方面什么是正确的 WebRTC(见下一个) 我需要什么
我在看 DelayedInit在 Scala in Depth ... 注释是我对代码的理解。 下面的 trait 接受一个非严格计算的参数(由于 => ),并返回 Unit .它的行为类似于构造函数
谁能给我指出一个用图片和简单的代码片段解释 WCF 的资源。我厌倦了谷歌搜索并在所有搜索结果中找到相同的“ABC”文章。 最佳答案 WCF 是一项非常复杂的技术,在我看来,它的文档记录非常少。启动和运
我期待以下 GetArgs.hs打印出传递给它的参数。 import System.Environment main = do args main 3 4 3 :39:1: Coul
private int vbo; private int ibo; vbo = glGenBuffers(); ibo = glGenBuffers(); glBindBuffer(GL_ARRAY_
我正在尝试一个 for 循环。我添加了一个 if 语句以在循环达到 30 时停止循环。 我见过i <= 10将运行 11 次,因为循环在达到 10 次时仍会运行。 如果有设置 i 的 if 语句,为什
我正在尝试了解 WSGI 的功能并需要一些帮助。 到目前为止,我知道它是一种服务器和应用程序之间的中间件,用于将不同的应用程序框架(位于服务器端)与应用程序连接,前提是相关框架具有 WSGI 适配器。
我是 Javascript 的新手,我正在尝试绕过 while 循环。我了解它们的目的,我想我了解它们的工作原理,但我在使用它们时遇到了麻烦。 我希望 while 值自身重复,直到两个随机数相互匹配。
我刚刚偶然发现Fabric并且文档并没有真正说明它是如何工作的。 我有根据的猜测是您需要在客户端和服务器端都安装它。 Python 代码存储在客户端,并在命令运行时通过 Fabric 的有线协议(pr
我想了解 ConditionalWeakTable .和有什么区别 class ClassA { static readonly ConditionalWeakTable OtherClass
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
我还没有成功找到任何可以引导我理解 UIPickerView 和 UIPickerView 模型的好例子。有什么建议吗? 最佳答案 为什么不使用默认的 Apple 文档示例?这是来自苹果文档的名为 U
我在看foldM为了获得关于如何使用它的直觉。 foldM :: Monad m => (a -> b -> m a) -> a -> [b] -> m a 在这个简单的例子中,我只返回 [Just
答案What are _mm_prefetch() locality hints?详细说明提示的含义。 我的问题是:我想要哪一个? 我正在处理一个被重复调用数十亿次的函数,其中包含一些 int 参数。
我一直在读这个article了解 gcroot 模板。我明白 gcroot provides handles into the garbage collected heap 然后 the handle
提供了一个用例: 流处理架构;事件进入 Kafka,然后由带有 MongoDB 接收器的作业进行处理。 数据库名称:myWebsite集合:用户 并且作业接收 users 集合中的 user 记录。
你好 我想更详细地了解 NFS 文件系统。我偶然发现了《NFS 图解》这本书,不幸的是它只能作为谷歌图书提供,所以有些页面丢失了。有人可能有另一个很好的资源,这将是在较低级别上了解 NFS 的良好开始
我无法理解这个问题,哪个更随机? rand() 或: rand() * rand() 我发现这是一个真正的脑筋急转弯,你能帮我吗? 编辑: 凭直觉,我知道数学答案是它们同样随机,但我忍不住认为,如果您
我是一名优秀的程序员,十分优秀!