- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道使用 Model.get_by_key_name() 还是 Model.get_by_id() 获取记录
例如,假设我要返回一些将用于显示记录表的 JSON,并且对于每条记录,都有一个删除该记录的按钮。假设我有模型“Foo”和模型实例“foo”。
我相信我可以使用以下任一方式将每个按钮与适当的记录相关联:
str(foo.key()) #suppose it eval's to "axhYm92ZZXJvY2tyDgsSCENhnb3J5GBQM"
或
foo.key().id() #suppose it eval's to "57"
这些值中的一个将进入 HTML 表单,用户可以单击请求删除具有此键/ID 的记录的按钮。
请求将导致:
Foo.get_by_key_name("axhYm92ZZXJvY2tyDgsSCENhnb3J5GBQM").delete()
或
Foo.get_by_id(57).delete()
现在,作为一个优柔寡断的 ADHD 程序员,我需要知道……哪个是“正确”的方法?它们似乎都有效,但是否存在使一个比另一个更可取的情况?使用“key”方式与“id”方式相比有什么优势吗?
最佳答案
您将 key 名称与字符串化 key 混淆了。他们是不同的。键的名称是您在构造时通过保留的 key_name 属性赋予实体的名称。如果不这样做,系统将生成一个 id。实体键可以具有名称或 ID,但不能同时具有两者。
如果您有意将 Key 字符串化,则可以通过将其传回 Key 构造函数来重构它。
stringifiedKey = str(key)
reconstitutedKey = db.Key(stringifiedKey)
假设您真正的意思是名称与 ID,这是哪个更方便的问题。任何性能差异都将是微观的。
关于python - gae 模型 get_by_id() 与 get_by_key_name(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240312/
用另一个使用内存缓存来保存数据库查询的函数来覆盖 get_by_key_name 是否有意义?像下面?在此示例中,memcache 键仅包含实体 key_name 只是为了使其简单... class
我想知道使用 Model.get_by_key_name() 还是 Model.get_by_id() 获取记录 例如,假设我要返回一些将用于显示记录表的 JSON,并且对于每条记录,都有一个删除该记
更新:经过进一步测试,这个问题似乎影响了我的实体组中的所有子实体。所有这些不同实例的根父级是用户类型,这是我自己创建的,而不是内置的用户类型。从子 Kind 的构造函数中删除 parent=user
在略微尴尬的开始之后,我与实体组的冒险继续进行(参见 Under some circumstances an App Engine get_by_key_name call using an exis
这是我的做法: class Person(db.Model): first_name = db.StringProperty() last_name = db.StringProperty(
db.get() 与 db.get_by_key_name() 相比性能如何? 最佳答案 get_by_key_name必须根据应用程序、模型、名称和父级计算键,因此它应该比不需要计算的 db.get
get(key) 是否需要实体键,get_by_key_name(key_names) 是否需要键名? 最佳答案 有区别。数据存储中的实体由其种类、父实体和标识符的组合来标识。 ( link ) “标
我是一名优秀的程序员,十分优秀!