为什么查询会显示第一个匹配的每个字母?

2024-04-27 00:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

Owner中,我有"owner""owner_tag"属性。你知道吗

我按owner查询,然后尝试打印owner_tag以获得匹配的结果。但我得到的是owner_tag第一个匹配的每个字母:

所以,在Owner

所有者:邮箱:az@example.com具有所有者标记:tag1, tag2, tag3。你知道吗

查询匹配"tag1",并通过"t""a""g""1"循环。我不明白为什么?你知道吗

代码如下:

query = Owner.all()
query.filter("owner", user)
w = query.get()

for tag in w.owner_tag:
    self.response.out.write("""
    %s, %s""" %
    (tag, w.tag_value))

更新

如果我使用fetch()而不是get(),那么它就工作了。但由于我不知道要获取的项目数,因此如何在不指定数字的情况下获取所有项目。我以为get()获取了所有匹配项:

query = Owner.all()
query.filter("owner", user)
w = query.fetch(10)

for tag in w:
    self.response.out.write("""
    %s, %s""" %
    (tag.owner_tag, tag.tag_value))

你能解释一下为什么上面的代码有效,而原始的get()代码无效吗?你知道吗


Tags: 代码inselfforgetresponsetagall
1条回答
网友
1楼 · 发布于 2024-04-27 00:25:16

^{}总是返回一个结果或None,当您对单个字符串进行迭代时,每个值都是一个字符。^{}按您的想法工作,带有可选的offset参数,因此您可以根据需要翻页查看结果。你知道吗

fetch()如果可能有大量的结果您可能不想为检索而付费,或者如果您想在一次数据存储访问中获得特定数量的结果,那么fetch()是有意义的。你知道吗

如果您想要所有结果,并且不介意让appengine来决定要在其中检索它们的往返次数,那么您只需遍历查询:for tag in query.filter("owner", user)。你知道吗

相关问题 更多 >