gpt4 book ai didi

python - GAE 中的 fetch() 获取什么?

转载 作者:行者123 更新时间:2023-11-30 23:56:49 24 4
gpt4 key购买 nike

这是我的另一个 question 的后续内容.

我以为

    mylist = list(Rep().all().fetch(50))

使mylist成为一个列表。但是当我尝试获取它的长度时,我收到了消息

self.response.out.write(len(P))
TypeError: object of type 'Rep' has no len()

谁能解释一下我做错了什么?

    Rep().replist = L                                   
Rep().put()
mylist = list(Rep().all().fetch(50))
P = mylist.pop()
self.response.out.write(len(P))

更新

作为其他可能遇到同样问题的人的引用;我发布了下表,这对我非常有帮助。 (原文here)

Rep().........................Rep object 
Rep.all().....................Query object
list(Rep.all())...............List of Rep objects.
list(Rep.all())[0]............A single Rep object
list(Rep.all())[0].replist....A list

谢谢大家的回答。

最佳答案

而不是这个:

Rep().replist = L                                    
Rep().put()
mylist = list(Rep().all().fetch(50))
P = mylist.pop()
self.response.out.write(len(P))

尝试这样的事情:

r = Rep()
r.replist = L
r.put()
mylist = Rep.all().fetch(50)
P = mylist.pop()
self.response.out.write(len(P.replist))

你的这段代码:

Rep().replist = L                                    
Rep().put()

正在创建一个Rep实例,然后将其replist分配给L。然后它创建另一个 Rep,并对其调用 put()。因此,您要写入数据存储区的内容是一个空白的 Rep - 它不会包含您的列表。

在此代码中:

mylist = list(Rep().all().fetch(50)) 

您正在 Rep 的实例上调用 all() - 您应该直接在类上调用它。此外,您不需要将结果包装在 list() 中,因为 fetch() 已经返回一个列表。

然后在下面有这个:

self.response.out.write(len(P)) 

您正在尝试获取 P(它是 Rep)的长度,而不是 P 的长度重新列出

更新:

回应第一条评论:

在此代码中:

r = Rep()

Rep() 正在创建 Rep 的实例。然后,r = 将该实例分配给名称r。所以现在名称 r 指的是 Rep 的该实例。

然后在这段代码中:

r.replist = L

它正在分配r的replist属性来引用列表L

你是对的,你可以这样做,而不是这两行:

r = Rep(replist = L)

它的作用是将L传递给Rep__init__函数,参数名为replistRep__init__ 函数继承自 db.Model 基类。此函数将提供的任何参数的值分配给模型上同名的属性。因此,在本例中,它将 L 分配给 replist 属性。所以它和原来的两行代码的效果是一样的,但是工作原理有点不同。

回应第二条评论:

Python 中的 = 运算符表示赋值,这与数学等价不同。

所以这段代码:

r = Rep()

并不意味着 r 现在等同于 Rep(),并且您现在可以使用 rRep( ) 表示同样的事情。

这意味着 r 现在等于 Rep() 的结果。 Rep() 的作用是分配一个 Rep 的新实例。因此,这使得 r 成为对新 Rep 的引用。因此,要稍后引用同一实例,您需要使用 r,而不是 Rep()(每次调用时都会分配一个新实例)。

关于python - GAE 中的 fetch() 获取什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com