【发布时间】:2022-08-10 15:21:48
【问题描述】:
在documentation 中说,当查询足够大(default_fetch_size 为 5000 行)时,cassandra-driver 会自动分页,并将返回PagedResult。
我已经测试了从本地 Cassandra 读取数据,其中包含 9999 行 SimpleStatement 和我自己的提取大小,但它返回了 ResultSet(9999 行)而不是页面(PagedResult 的实例)。另外,我尝试更改Session.default_fetch_size,但效果不佳。
这是我的代码..
我的第一次尝试:这是我为更改提取大小而编写的SimpleStatement 代码。
cluster = Cluster()
session = cluster.connect(keyspace_name)
query = \"SELECT * FROM user\"
statement = SimpleStatement(query, fetch_size=10)
rows = list(session.execute(statement))
print(len(rows))
它打印 9999(所有行),而不是 10 行,因为我已经设置了 fetch_size。
我的第二次尝试:我试图通过更改会话的默认获取大小Session.default_fetch_size 来更改查询获取大小。
cluster = Cluster()
session = cluster.connect(keyspace_name)
session.default_fetch_size = 10
query = \"SELECT * FROM user\"
rows = list(session.execute(query))
print(len(rows))
它还打印 9999 行而不是 10 行。
我的目标不是限制我的 fetch 查询中的行,例如SELECT * FROM user LIMIT 10。我想要的是逐页获取行以避免内存过载。
那么究竟发生了什么?
注意:我使用 Cassandra-Driver 3.25 for Python 并使用 Python3.7
如果我的附加信息仍然不能使我的问题成为一个好问题,我很抱歉。我以前从不问任何问题。所以......欢迎任何建议:)
-
您能否添加一个最小的示例代码来复制问题但您正在使用的版本?这是关于如何提出好问题的友好说明。一般指导是您 (a) 提供一个很好的问题摘要,包括软件/组件版本、完整的错误消息 + 完整的堆栈跟踪; (b) 描述您尝试解决问题的方法、您所做调查的详细信息; (c) 复制问题的最小示例代码。干杯!
-
感谢您的建议,我正在为我的问题添加详细信息
标签: cassandra datastax-python-driver