我使用Google (GAE)制作了一个留言簿应用程序:python正在iPhone上运行。
它有能力用昵称在黑板上写消息。
该实体有3份文件:
我要做的另一个功能,用户可以张贴回复(或评论)在一条消息。
但要做到这一点,我认为应该有一个“主键”的留言簿实体,所以我可以把一些有关答复的信息在一条消息上。
有了这三个字段,我就不能只从数据库中得到一条消息。
我是数据库新手。数据库会自动保存某种索引吗?还是必须由用户来完成?
如果它是由数据库本身自动完成的(或者不是),那么我如何才能只得到一个带有密钥的实体呢?
我也想得到一些关于如何制作回复功能的建议。感谢阅读。
发布于 2011-02-23 00:31:13
每个实体都有钥匙。如果在创建实体时没有分配key_name,则键的一部分是自动分配的数字ID。除非另有指定,否则将自动对长文本字段以外的属性进行索引。
要获得一个实体,如果您知道密钥,您只需执行db.get(key)。对于答复,您可能希望在reply实体中使用一个db.ReferenceProperty来指向父消息;这将自动在消息中创建一个反向引用查询,以获取回复。
发布于 2011-02-23 01:51:05
每个实体都有一个键,它包含信息,例如它是什么类型的实体、它的名称空间、父实体,最重要的是一个唯一的标识符(可选用户可指定的)。
您可以使用所有实体所拥有的key方法获取实体的密钥。
message.key()键可以转换为URL安全字符串,也可以从URL安全字符串转换.
message_key = str(message.key())
message = Message.get(message_key)如果密钥具有用户指定的唯一标识符(密钥名),则可以这样访问它。
message.key().name()或者,如果没有指定密钥名,则将自动分配id。
message.key().id()若要将密钥名称分配给实体,必须在创建实体时指定它,之后无法添加/删除或更改密钥名称。
message = Message(key_name='someusefulstring', content='etc')
message.put()然后,您将能够使用密钥名从数据存储中获取消息。
message = Message.get_by_key_name('someusefulstring')使用db.ReferenceProperty存储对另一个实体的引用(可以是任何类型的)
尽可能使用密钥名是个好主意,因为从数据存储中获取密钥要快得多,因为它不涉及查询。
https://stackoverflow.com/questions/5085731
复制相似问题