gpt4 book ai didi

Python、SQLalchemy 对象长度

转载 作者:行者123 更新时间:2023-11-30 22:15:32 25 4
gpt4 key购买 nike

使用 SQLAlchemy 执行选择后,我想检查响应的长度,当我将 len() 函数的值分配给变量时,它会更改值

print(len(SQLAlchemyResult.fetchall()))
w=len(SQLAlchemyResult.fetchall())
print(w)

输出如下:

1
0

为什么第二个值不等于1?

最佳答案

因为它是一个迭代器,在第一个命令之后被消耗。在这种情况下,请先尝试将其设为列表:

results = list(SQLAlchemyResult.fetchall())
print(len(results))
print(len(results))

输出:

1
1

什么是迭代器?它是一个可以产生多个值的对象。也许所有这些都已经在里面了,也许它必须做某项工作才能生产下一个。例如,您有 range(5)。那是一个迭代器。试试这个:

print(range(5))
print(list(range(5)))

输出:

range(5)
[0, 1, 2, 3, 4]

第一个命令刚刚调用了 range 对象的 __str__ 方法,这是 range(5)。第二个首先创建一个列表 - 它接受已实现 __next__ 的可迭代对象。此 __next__ 返回值直到迭代器末尾。然后,当我们有一个包含迭代器中所有值的列表时,我们只需打印该列表。

为什么我们需要它?由于某些数据可能需要计算或很长,因此您可能需要先处理它,然后再请求另一部分。或者,也许您有一台相机,并且有一个迭代器,它总是提供最新的帧(或等待下一帧)。这是一个有用的概念,还有生成器

关于Python、SQLalchemy 对象长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50277792/

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