You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Trino Python SDK中使用服务器端游标控制内存占用?

在Trino Python SDK中实现服务器端游标(低内存处理)

要在纯Trino DBAPI中实现类似SQLAlchemy的流式处理、控制内存占用,核心是启用服务器端游标,避免一次性拉取全量数据到本地。

解决方案代码

from trino.dbapi import connect

# 建立Trino连接
conn = connect(
    host="你的Trino主机地址",
    port=8080,
    user="你的用户名",
    catalog="目标catalog",
    schema="目标schema"
)

# 创建服务器端游标(关键:指定server_side_cursor=True)
cursor = conn.cursor(server_side_cursor=True)
# 设置每次从服务器拉取的行数
cursor.arraysize = 1000000

# 执行查询
cursor.execute("SELECT * FROM \"big\".\"dataset\".table")

# 分批拉取并处理数据
while True:
    batch_rows = cursor.fetchmany()
    if not batch_rows:
        break
    # 替换为你的批次数据处理逻辑
    process_batch(batch_rows)

# 清理资源
cursor.close()
conn.close()

原代码问题说明

你之前的代码没有启用服务器端游标,默认的客户端游标会在cursor.execute()执行完成后,一次性将全量查询结果拉取到本地内存缓存,后续的fetchmany()只是从本地缓存读取数据,无法控制内存占用。

关键要点

  • server_side_cursor=True:创建游标时开启此参数,游标会与Trino服务器保持会话,每次fetchmany()都会向服务器请求下一批数据,而非预加载全量数据。
  • cursor.arraysize:定义每次fetchmany()拉取的行数,可根据你的内存承载能力调整数值。

内容的提问来源于stack exchange,提问作者Flo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:03:21